【发布时间】:2017-01-27 10:43:51
【问题描述】:
String s = "hello";
字符串文字在字符串文字池中具有引用,并且永远不符合垃圾收集条件。所以,在上面这行之后,即使我说:
s=null;
据我了解,字符串对象“hello”仍将在堆中。来源:https://www.javaranch.com/journal/200409/ScjpTipLine-StringsLiterally.html
String 数组中的字符串也一样吗?假设我们有
String[] arr = {"one","two","three"};
arr=null;
这 3 个字符串对象是否仍然在从池中引用的堆上? 或者它们将与数组对象一起被垃圾回收。
【问题讨论】:
-
字符串文字池不是堆的一部分。见stackoverflow.com/questions/4918399/…
-
这就是我提到“参考”的原因。根据链接中的描述,常量表(Literal Pool)存储对驻留在堆内存中的String对象的引用。
标签: java string garbage-collection