jvm Oracle Java HotSpot虚拟机性能选项(+使用字符串缓存、+使用压缩字符串、+优化字符串连接)的当前状态如何

9bfwbjaz  于 2022-11-07  发布在  Oracle
关注(0)|答案(4)|浏览(140)

我阅读Java HotSpot VM Options。我看到了一些有趣的VM开关,大多与字符串有关-这对我来说很有价值,因为我的应用程序正在进行一些繁重的字符串操作。这些开关是:

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

我想知道-这些开关是默认打开的吗?使用它们的真实的世界经验是什么?它们有什么不同吗?

a1o7rhls

a1o7rhls1#

要检查默认值,请使用

java -XX:+PrintFlagsFinal

要找到您想要的内容,您可以

java -XX:+PrintFlagsFinal | grep UseCompressedStrings
ifsvaxew

ifsvaxew2#

我知道-XX:+UseCompressedStrings在Java7中被删除了,因为它太难支持了。
对于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}
c9qzyr3d

c9qzyr3d3#

考虑到字符串的性能,请看一下-XX:+PrintStringTableStatistics-XX:StringTableSize=。Java 7提供了一些不错的特性,允许在使用中间字符串时调整字符串缓存。这样你就可以优化字符串缓存的大小。
以及相关的字符串性能问题解答:Java GC tuning for strings

vx6bjr1n

vx6bjr1n4#

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

JDK6u21       JDK7u21       JDK8u191

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

相关问题