-XX:+UseCompressedOops 与 -XX:-UseCompressedOops

 ​  开启(-XX:+UseCompressedOops) 可以压缩指针。  关闭(-XX:-UseCompressedOops) 可以关闭压缩指针。 

1:关闭(-XX:-UseCompressedOops) 可以关闭压缩指针,对象头16字节(klass pointer 8字节)reference 8字节

-XX:+UseCompressedOops 与 -XX:-UseCompressedOops

2:开启(-XX:+UseCompressedOops) 可以压缩指针对象头12字节(klass pointer 4字节)  reference 4字节-XX:+UseCompressedOops 与 -XX:-UseCompressedOops

Simulate the class layout in different VM modes

32 bit : 对象头 4+4 =8字节

-XX:+UseCompressedOops 与 -XX:-UseCompressedOops

-XX:+UseCompressedOops 与 -XX:-UseCompressedOops

 space losses: 指出了为了使instance size为8 (mode为8-byte align)的倍数而对齐所padding的内存,如下图

-XX:+UseCompressedOops 与 -XX:-UseCompressedOops

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