为什么-XX:+ UseCompressedOops没有默认值,并且不总是使用?

时间:2015-07-03 10:15:31

标签: java tomcat jvm jvm-hotspot

想知道是否存在使用-XX:+ UseCompressedOops不是最佳的情况?看起来使用此选项有很多好处。

2 个答案:

答案 0 :(得分:1)

看起来你不是第一个这么想的人。 根据{{​​3}},除非你使用超过32GB的堆,否则它就会开启。

禁用它将是一种罕见的边缘情况,例如针对错误或类似事情的解决方法。

  

此选项的重要性也可以通过Java的事实来实现   6更新18 Oracle默认启用-XX:+ HotSpot中的UseCompressedOops   JVM基于最大Java堆大小。

答案 1 :(得分:0)

  

为什么[...]没有默认

热点JVM中的许多设置都是基于各种系统属性以及其他参数自动配置的。因此,不存在一组固定的默认值。

要查看实际应用了哪些标记,您可以添加-XX:+PrintFlagsFinal,这将在某些情况下显示正在运行的压缩oops。

$ java -Xmx64g -XX:+PrintFlagsFinal | grep UseCompressedOops
     bool UseCompressedOops                         = false                               {lp64_product}
$ java         -XX:+PrintFlagsFinal | grep UseCompressedOops
     bool UseCompressedOops                        := true                                {lp64_product}