UseCompressedOops JVM标志做什么以及何时应该使用它?

时间:2012-06-15 16:15:34

标签: java memory jvm jvm-hotspot

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

1 个答案:

答案 0 :(得分:78)

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

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

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


更新

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