2009-07-08 65 views
0
class Stage 
{ 

    Actor act1 = new Actor(); 
    Actor act2 = new Actor(); 
    Actor act3 = new Actor(); 

} 

Stage stg = new Stage(); 

垃圾回收在java场景中的表现如何?内部对象的垃圾回收

stg = null; 

将三个对象创建act1act2act3也得到垃圾回收?

回答

0

当每个对象的引用计数为0时,GC将收集它们全部。

1

是的。

当垃圾收集器运行时,它会看到对旧对象的引用已经消失,并将其清理干净。下一次运行时,它会看到现在没有任何指向其他三个对象,并且也清理它们。

从概念上讲,无论如何,我相信大多数垃圾收集者会比实践中的智能更聪明一点,并且一次就能完成。确切的机制会有所不同。

+0

所以这意味着我不需要专门设置内部对象为null。他们会自动处理。 谢谢 – krisp 2009-07-08 13:04:26

0

如果没有更多引用它们,它们将被垃圾回收。不要忘记从外部删除附加的EventListener,因为它们也算作参考(只要您不使用weak-reference)。