当你将你的应用从 32 位的 JVM 迁移到 64 位的 JVM 时,由于对象的指针从
32 位增加到了 64 位,因此堆内存会突然增加,差不多要翻倍。这也会对 CPU
缓存(容量比内存小很多)的数据产生不利的影响。因为,迁移到 64 位的 JVM
主要动机在于可以指定最大堆大小,通过压缩 OOP 可以节省一定的内存。通过
-XX:+UseCompressedOops 选项,JVM 会使用 32 位的 OOP,而不是 64 位
的 OOP。
当你将你的应用从 32 位的 JVM 迁移到 64 位的 JVM 时,由于对象的指针从
32 位增加到了 64 位,因此堆内存会突然增加,差不多要翻倍。这也会对 CPU
缓存(容量比内存小很多)的数据产生不利的影响。因为,迁移到 64 位的 JVM
主要动机在于可以指定最大堆大小,通过压缩 OOP 可以节省一定的内存。通过
-XX:+UseCompressedOops 选项,JVM 会使用 32 位的 OOP,而不是 64 位
的 OOP。