是否存在强制JVM不将特定的String
实例存储在寿命长的字符串池中的合法方法?
new String()
是否提供此功能,除非我调用intern()
,否则我可以100%确定将以这种方式创建的值放到堆中而不放到池中?
答案 0 :(得分:3)
是否存在强制JVM不将特定的String实例存储在长期存在的字符串池中的合法方法?
除了不使用字符串文字初始化外,恐怕没有。
新的String()是否提供此功能,除非我调用intern(),否则我可以100%确定将以这种方式创建的值放入堆中,而不放入池中?
是(请记住,如果您编写String str1 = new String("Hello");
,则String
所引用的str1
实例将不会被内部化,而为{文字字符串String
将)。
还要注意,池在堆中的确切存储位置取决于JVM的版本,如here
所述。