3
  • 是否有强制 JVM 不将特定String实例存储在长寿命字符串池中的合法方法?

  • 是否new String()提供此功能,并且我可以 100% 确定以这种方式创建的值将被放入堆而不是池中,除非我调用intern()

4

1 回答 1

3

是否有合法的方法来强制 JVM 不将特定的 String 实例存储在长寿命的字符串池中?

除了不使用字符串文字初始化它之外,恐怕没有。

new String() 是否提供此功能,并且我可以 100% 确定以这种方式创建的值将被放入堆而不是池中,除非我调用 intern()?

是的(请记住,如果您编写String str1 = new String("Hello");,则String引用的实例str1不会被内部化,而String为文字字符串创建的实例"Hello"会)。

另请注意,池中存储在堆中的确切位置取决于 JVM 的版本,如此处所述

于 2018-07-31T13:44:17.853 回答