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

Roc*_*yMM 8 java performance jvm jvm-hotspot

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

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

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

小智 14

要检查默认值,请使用

java -XX:+PrintFlagsFinal
Run Code Online (Sandbox Code Playgroud)

要准确找到你想要的东西

java -XX:+PrintFlagsFinal | grep UseCompressedStrings
Run Code Online (Sandbox Code Playgroud)


Pet*_*rey 8

我知道-XX:+UseCompressedStrings在Java 7中基于它太难以支持而被删除了.

对于Java 7更新40

$ java -XX:+PrintFlagsFinal 2>&1 | grep UseStringCache
     bool UseStringCache                            = false           {product}           
$ java -XX:+PrintFlagsFinal 2>&1 | grep OptimizeStringConcat
     bool OptimizeStringConcat                      = true            {C2 product}  
Run Code Online (Sandbox Code Playgroud)


Bee*_*ope 6

根据我使用 PrintFlagsFinal 对 JDK6u21、JDK7u21 和 JDK8u191 的检查,我们有以下值:

                               JDK6u21       JDK7u21       JDK8u191

-XX:+UseStringCache              false         false   <unsupported>
-XX:+UseCompressedStrings        false  <unsupported>  <unsupported>
-XX:+OptimizeStringConcat        false          true           true
Run Code Online (Sandbox Code Playgroud)


Ale*_*leš 5

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

并且,相关的字符串性能Q/A:字符串的Java GC调优