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);