class Test
{
public static void main(String[] agrs)
{
String[] person = new String[20];
String pername = "Peter";
person[0] = pername;
pername = null;
System.out.println(person[0]); // prints " Peter " on screen
System.out.println(pername); // no content in pername. prints " null "
}
}
pername对象是否有资格进行垃圾回收? 我认为它符合条件,因为人[0]包含"彼得"和人[0]不再引用pername。
答案 0 :(得分:2)
这里几乎没有误会。 pername
或person[0]
只是对String对象的实际实例的引用。在堆栈上实时引用,将在堆栈中,直到它在程序上下文中。除非两个引用都为null,否则String实例不会被GC。
从GC根可以访问的任何对象都不能被垃圾回收。一个简单的java程序将具有以下GC根
您的案件属于第一类。
您可以阅读更多内容 - Java Memory Management