Oracle Java HotSpot VM性能选项的当前状态是什么(+ UseStringCache,+ UseCompressedStrings,+ OptimizeStringConcat)

时间:2013-09-26 10:47:22

标签: java performance jvm jvm-hotspot

我正在阅读Java HotSpot VM Options。我见过一些有趣的虚拟机交换机,主要与字符串有关 - 这对我来说很有价值,因为我的应用程序正在做一些繁重的字符串操作。那些是:

  • -XX:+UseStringCache
  • -XX:+UseCompressedStrings
  • -XX:+OptimizeStringConcat

我在想 - 这些开关是默认开启的吗?使用它们的真实体验是什么?他们有所作为吗?

4 个答案:

答案 0 :(得分:14)

要检查默认值,请使用

java -XX:+PrintFlagsFinal

要准确找到你想要的东西

java -XX:+PrintFlagsFinal | grep UseCompressedStrings

答案 1 :(得分:7)

我知道{7}已被Java 7删除,因为它太难以支持。

对于Java 7 update 40

-XX:+UseCompressedStrings

答案 2 :(得分:5)

考虑字符串性能,请查看-XX:+PrintStringTableStatistics-XX:StringTableSize=。 Java 7具有很好的功能,允许在使用实习字符串时调整String缓存。这样就可以优化String缓存大小。

并且,相关的字符串性能Q / A:Java GC tuning for strings

答案 3 :(得分:3)

基于我使用PrintFlagsFinal检查JDK6u21和JDK7u21,我们有以下值:

                               JDK6u21       JDK7u21       JDK8u191

-XX:+UseStringCache              false         false   <unsupported>
-XX:+UseCompressedStrings        false  <unsupported>  <unsupported>
-XX:+OptimizeStringConcat        false          true           true