UseCompressedOops JVM标志是做什么的,什么时候应该使用它?
热点JVM标志-XX:+UseCompressedOops
做什么,我应该什么时候使用它? 在64位Java实例上使用它(而不是使用它)时,我会看到什么样的性能和内存使用差异?
去年的大多数HotSpot JVM都默认启用它。 此选项允许引用在64位JVM中为32位,并可访问接近32 GB的堆。 (超过32位的指针可以)(你也可以有近乎无限的堆内存)。 这可以节省大量的内存并可能提高性能。
如果你想使用这个选项,我build议你更新到一个默认的版本,因为可能有一个很好的原因,如错误,为什么以前没有启用。 尝试Java 6更新23或Java 7更新5。
总之,不要打开它,使用一个默认情况下启用它的版本。
更新:
在Java 8中,您可以select设置-XX:ObjectAlignmentInBytes=
,事实上,如果将堆大小设置为64 GB,则将使用-XX:ObjectAlignmentInBytes=16
并仍使用32位引用。