垃圾收集符合条件的对象

时间:2013-03-07 06:13:11

标签: java performance garbage-collection

我有6个单独的java Classes A,B,C,D,E and F

Class A创建Class B的对象,并在Class B中调用方法。

Class B方法创建class C的对象,并在class C中调用方法。

Class C方法创建D,E,F类的对象并调用它们的方法。

当最后控件最后回到A类时,如果我将Class B的对象引用设为null,这会使得到目前为止创建的class B,C,D,E,F的所有对象都符合垃圾回收的条件吗?

4 个答案:

答案 0 :(得分:0)

是。它会。由于父类现在被引用为null并且是孤立的,因此它下面的所有引用对象都符合GC的条件。

当对象不再存在强引用时,对象进入无法访问状态。当一个对象无法访问时,它是集合的候选者

http:// 192.9.162.55 /docs/books/performance/1st_edition/html/JPAppGC.fm.html

答案 1 :(得分:0)

是的,他们将有资格进行垃圾收集,如果它们是在方法内部创建的,即在本地然后它们是合格的,并且如果它们是实例变量对象,那么只有那个被设置为null的对象的副本才有资格进行垃圾收集。为gc。

答案 2 :(得分:0)

是。 “当没有对该对象的引用时,对象有资格进行垃圾收集。”

因此,如果不再引用b,则符合gc条件。反过来它被收集,没有更多的c参考,所以c符合条件,所以故事继续。

答案 3 :(得分:0)

通常是的,但没有更多信息,我们无法肯定地说 Prime示例是,如果C表示对它在集合中创建的D的实例的引用,该集合存储在http会话或EJB事务中(或直接存储引用)。如果发生这种情况,那些引用将阻止D的相关实例被垃圾收集,以及它们引用的所有内容。