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



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

最新更新