什么是指针压缩?
jdk1.6后 在64位的操作系统中 JVM支持指针压缩 jvm配置参数:UseCompressedOops,compressed压缩、oop(ordinary object pointer)对象指针,启用指针压缩:XX:+UseCompressedOops(默认开启),禁止指针压缩:XX:UseCompressedOops
为啥要开启指针压缩?
1. 64位的操作系统中Hotspot使用的是32位指针,比32位系统多出1.5倍内存,且较大的指针在主内存和缓存之间移动,消耗更多性能
2. 32位的内存机器只支持4G内存,通过指针压缩优化,使jvm只用32位就可以获得更大内存(一般不超过32G,内存大于32G时指针压缩会失效,会使用64位进行寻址,造成性能浪费的问题)
3. 减少64位机器的内存消耗