是否有强制 JVM 不将特定
String
实例存储在长寿命字符串池中的合法方法?是否
new String()
提供此功能,并且我可以 100% 确定以这种方式创建的值将被放入堆而不是池中,除非我调用intern()
?
问问题
165 次
1 回答
3
是否有合法的方法来强制 JVM 不将特定的 String 实例存储在长寿命的字符串池中?
除了不使用字符串文字初始化它之外,恐怕没有。
new String() 是否提供此功能,并且我可以 100% 确定以这种方式创建的值将被放入堆而不是池中,除非我调用 intern()?
是的(请记住,如果您编写String str1 = new String("Hello");
,则String
引用的实例str1
不会被内部化,而String
为文字字符串创建的实例"Hello"
会)。
另请注意,池中存储在堆中的确切位置取决于 JVM 的版本,如此处所述
于 2018-07-31T13:44:17.853 回答