84

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

4

1 回答 1

91

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

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

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


更新:

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

于 2012-06-15T16:37:20.810 回答