0

我看到很多关于什么是 gc root 的解释。我知道局部变量和参数是 gc root。但是成员变量不是 gc root?如果我在类正文中输入代码

    Person p = new Person("Lily");
    public void sayHello(){
        System.out.println(p.name);
    }

所以,p不是本地变量而是成员变量。如果p不是GC根,它可能是集合。并且在sayHello方法中会有空点异常。

4

1 回答 1

0

人 p 将是根对象。它将是分层的,例如:

person
  |
name

它也不会以空指针异常结束,因为你初始化 p 然后你试图访问它的名称。

如果您将 p 定义为 null ,则 Nullpointer 只会命中Person p = null

现在你尝试访问它的名字System.out.println(p.name);

于 2015-03-29T07:54:27.463 回答