为什么JVM开启指针压缩后支持的最大堆内存是32G?

-XX:+UseCompressedOops Oops(ordinary object pointer)

JVM开启压缩之后对象指针会被压缩到4字节,也就是32位,也就是能代表2的32次方个寻址地址(4G个)

又因为java默认对象对齐方式是8个字节对齐,所以能根据4G个地址找到4*8(32G)个内存的对象。如果超过32G之后,压缩就已经找不全所有的对象了,所以干脆不压缩了。

你可能感兴趣的:(jvm,java)