如果我有一个持久的对象A和许多包含对A的引用的临时对象B,C,D等,只要A被某个东西引用,这些临时对象是否会被收集?
class A {} // (sits in web app session)
class B {
private A a;
}
class C {
private A a;
}
只有请求存在B和C,但包含对A的引用。
答案 0 :(得分:4)
B和C可以在请求后立即进行垃圾回收。什么都没有提到它们。
答案 1 :(得分:2)
如果没有办法到达B和C(但是他们到达其他物体),他们将照常收集。
答案 2 :(得分:2)
是的,可以收集它们。如果A持有对它们的引用,那么只要A仍然可以访问它们就不会被收集。
答案 3 :(得分:1)
是的,他们会的。只要可以从根可访问对象(当前活动调用中的局部变量加上全局变量)访问它们,垃圾收集就会使对象保持活动状态。
如果A
不包含对B
和C
个对象的引用,则它无法使它们保持活动状态; A
{/ 1}}引用B
引用C
和{{1}}对象这一事实无关紧要。