【发布时间】:2013-01-14 15:14:49
【问题描述】:
假设我有一个名为A 的托管bean,即@RequestScoped 假设A 引用了另一个托管bean B,并且B 被声明为@SessionScoped。 A 引用另一个具有更长范围的 bean 的事实是否会阻止 A 在 HttpRequest 的末尾收集垃圾?
如果B 包含对A 的引用,情况是否会反过来改变?如果是,那为什么?
【问题讨论】:
-
不...但是如果更长范围的 bean B 有对 A 的引用,那么在收集 B 之前不能对 A 进行垃圾收集。
-
@Charlie 你能解释一下为什么第一个问题的答案是“否”,第二个问题是“是”。
-
当一个对象无法访问时,它可以被垃圾回收。即当没有对象在任何线程上执行时,或者任何静态引用都持有该对象的强引用到。考虑进行垃圾回收的对象持有对其他对象的引用这一事实无关紧要。
标签: java jsf garbage-collection