我有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
的所有对象都符合垃圾回收的条件吗?
答案 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的相关实例被垃圾收集,以及它们引用的所有内容。