可能这是一个愚蠢的问题。
将对象标记为垃圾回收时,java是否还会将包含的对象标记为垃圾回收?

我的意思是,

class ContainerClass {
    ContainedClass obj1, obj2;
    //Constructor
    ContainerClass() {
    obj1 = new ContainedClass ();
    obj2 = new ContainedClass ();
    }
  // main
    public static void main( String args[]) {
        ContainerClass  c = new ContainerClass();
        c = null ; // c is mared for GC. The question is c.obj1 and c.obj2 is also marked?
    }
}

最佳答案

是的,如果仅ContainerClass对象具有对它们的引用,则ContainedClass对象将在ContainerClass对象本身变为合格的同时变为有资格进行垃圾回收。

请注意,这些对象的实际集合可以独立发生。

08-04 04:52