java中的成员变量是GC root吗?
The Member Variable in java is GC root it?
我看到很多解释什么是gc root.And 我知道局部变量和params 是gc root.But 成员变量不是gc root?如果我在 class body
中输入代码
Person p = new Person("Lily");
public void sayHello(){
System.out.println(p.name);
}
所以,p不是local var而是member var.If p不是GC root,可能collection.And在sayHello方法中会有null point exception。
人 p 将是根对象。它将是分层的:
person
|
name
它也不会以空指针异常结束,因为你初始化了 p 然后你试图访问它上面的 name。
空指针只会命中,如果你像Person p = null
一样将p定义为null
现在您尝试访问其上的名称System.out.println(p.name);
我看到很多解释什么是gc root.And 我知道局部变量和params 是gc root.But 成员变量不是gc root?如果我在 class body
中输入代码 Person p = new Person("Lily");
public void sayHello(){
System.out.println(p.name);
}
所以,p不是local var而是member var.If p不是GC root,可能collection.And在sayHello方法中会有null point exception。
人 p 将是根对象。它将是分层的:
person
|
name
它也不会以空指针异常结束,因为你初始化了 p 然后你试图访问它上面的 name。
空指针只会命中,如果你像Person p = null
现在您尝试访问其上的名称System.out.println(p.name);