HotSpot JVM 标志 -XX:+UseCompressedOops
有什么作用,我应该什么时候使用它?在 64 位 Java 实例上使用它(与不使用它相比)时,我会看到什么样的性能和内存使用差异?
最佳答案
去年的大多数 HotSpot JVM 都默认启用了它。此选项允许在 64 位 JVM 中使用 32 位的引用并访问接近 32 GB 的堆。 (超过 32 位指针可以)(您也可以拥有几乎无限的堆外内存)。这可以节省大量内存并可能提高性能。
如果您想使用此选项,我建议您更新到默认启用它的版本,因为可能有一个很好的理由,例如错误,为什么以前没有启用它。尝试 Java 6 更新 23 或 Java 7 更新 5。
总之不要开启,使用默认开启的版本。
更新:
在 Java 8 中,您可以选择设置 -XX:ObjectAlignmentInBytes=
,事实上,如果您将堆大小设置为 64 GB,它将使用 -XX:ObjectAlignmentInBytes=16
并且仍然使用 32 位引用。
关于java - UseCompressedOops JVM 标志有什么作用,我应该什么时候使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11054548/