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