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位引用。