JVM -XX:+ StringCache参数?

Gan*_*alf 19 java jvm jvm-hotspot jvm-arguments

我最近在阅读JRE 6 [ Java VM Options ]中可用的所有JVM参数,并看到了这一点:

-XX:+ StringCache:启用常用分配字符串的缓存.

现在我一直认为Java保留了一个实习池(正确的单词?)字符串,当使用字符串连接时,它不是创建新对象,而是从这个池中提取它们.有没有人曾经使用过这个论点,或者可以解释为什么需要它?

编辑:我试图运行一个基准测试,看看这个参数是否有任何影响,并且无法让Sun JVM识别它.这与:

java version "1.6.0_11"  
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode,
sharing)
Run Code Online (Sandbox Code Playgroud)

所以我不确定这个论点是否有效.

Tom*_*ine 6

我相信当与-XX:+AggressiveOpts它一起使用时,可以String在创建String具有相同文本的同时返回相同的对象(当然不是通过new String).存在一个配置缓存的配置阶段,并且在一个点之后缓存被切换为只读.它在某些基准测试中得分较高.


Gan*_*alf 0

我还没有找到一个 JVM 能够接受这个假设的论点——所以我想没有什么可说的了。

  • 您需要 -XX:+AggressiveOpts 来启用许多奇怪的选项,包括 -XX:+UseStringCache。这是参考:http://mail.openjdk.java.net/pipermail/jdk7-dev/2011-April/002024.html (3认同)