UseCompressedOops JVM 标志有什么作用,我应该何时使用它?

2022-08-31 11:45:51

HotSpot JVM 标志有什么作用,我应该何时使用它?在 64 位 Java 实例上使用它时,我会看到什么样的性能和内存使用率差异(与不使用它)?-XX:+UseCompressedOops


答案 1

去年的大多数HotSpot JVM都默认打开了它。此选项允许在 64 位 JVM 中引用为 32 位,并访问接近 32 GB 的堆。(超过 32 位指针可以)(您也可以拥有近乎无限的堆外内存)。这可以节省大量内存,并可能提高性能。

如果你想使用这个选项,我建议你更新到一个默认启用它的版本,因为可能有一个很好的理由,比如错误,为什么以前没有启用它。请尝试 Java 6 更新 23 或 Java 7 更新 5。

简而言之,不要打开它,使用默认打开它的版本。


更新:

在Java 8中,您可以选择设置,实际上,如果堆大小为64 GB,它将使用并仍然使用32位引用。-XX:ObjectAlignmentInBytes=-XX:ObjectAlignmentInBytes=16


答案 2