Java-未缓冲的字符串

时间:2018-07-31 13:35:04

标签: java string jvm string-pool

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

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

1 个答案:

答案 0 :(得分:3)

  

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

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

  

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

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

还要注意,池在堆中的确切存储位置取决于JVM的版本,如here

所述。