JVM -XX:+StringCache argument?

2022-09-02 10:49:14

我最近正在阅读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)

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


答案 1

我相信当与它一起使用时,可以在创建具有相同文本的时返回相同的对象(尽管当然不是通过)。有一个配置文件阶段,其中缓存正在构建,并且在某个点之后,缓存将切换为只读。它在某些基准测试中获得更高的分数。-XX:+AggressiveOptsStringStringnew String


答案 2

-XX:-UseStringCache对我有用,很奇怪。

我的jdk版本应该是1.6.0_22


推荐