适合在java中进行垃圾收集的对象

时间:2015-03-29 07:46:22

标签: java garbage-collection

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。

1 个答案:

答案 0 :(得分:2)

这里几乎没有误会。 pernameperson[0]只是对String对象的实际实例的引用。在堆栈上实时引用,将在堆栈中,直到它在程序上下文中。除非两个引用都为null,否则String实例不会被GC。

从GC根可以访问的任何对象都不能被垃圾回收。一个简单的java程序将具有以下GC根

  1. 主要方法中的局部变量
  2. 主线程
  3. 主类的静态变量
  4. 您的案件属于第一类。

    您可以阅读更多内容 - Java Memory Management