-XX:+UseCompressedOops 与 -XX:-UseCompressedOops
开启(-XX:+UseCompressedOops) 可以压缩指针。 关闭(-XX:-UseCompressedOops) 可以关闭压缩指针。
1:关闭(-XX:-UseCompressedOops) 可以关闭压缩指针,对象头16字节(klass pointer 8字节)reference 8字节
2:开启(-XX:+UseCompressedOops) 可以压缩指针对象头12字节(klass pointer 4字节) reference 4字节
Simulate the class layout in different VM modes
32 bit : 对象头 4+4 =8字节
space losses: 指出了为了使instance size为8 (mode为8-byte align)的倍数而对齐所padding的内存,如下图
If UseCompressedOops is true, the following oops in the heap will be compressed:
- the klass field of every object
- every oop instance field
- every element of an oop array (objArray)
请参考:
https://wiki.openjdk.java.net/display/HotSpot/CompressedOops