java 压缩指针原理

说明:此文件只是笔记供以后参考,有需要的随便瞅瞅。

为什么64位的jdk内存不建议超过32G?

因为内存在32G一下,jdk会开启指针压缩,减少内存空间占用。

何为指针压缩,先来说一下内存,为何32位的内存只有4G?

如果按照常规计算 2的32次方算出来的只有512M,其实 机器内存是通过一个个小格子来存储的,一个小格子为1bit(位),但是它把8个小格子即8bit(1byte)作为寻址地址的最小单位,所以

2的32次方 即 2的32次方的byte 然后 乘 8bit,即得出4G的内存。

java 为何只在32G内存下指针压缩?

在64位操作系统下,java如果没有指针压缩,则需要用64位即8byte 来表示所有的地址,这样的话,那64位的jvm内存占用会比32位 多处1.5倍左右,那如何用4个字节 32位表示64位的所有的地址呢?jvm 参考计算机内存的方式,将8byte作为一个基本的内存单位,不足的会填充,所以4个字节最多表示4G,在指针压缩情况下 4*8=32G的内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值