【发布时间】:2012-02-24 10:26:05
【问题描述】:
我有一个类似于以下的 spring bean:
public class MyServiceImpl {
private MyDAO myDAO;
public class MyInnerClass implements SomeInterface<MyInnerClass> {
@Override
public MyInnerClass loadFreshObject(final String key) {
return myDAO.load(key);
}
}
}
MyInnerClass 的实例是在 spring bean 之外的代码中创建的,但不会保留对这些实例的引用。
假设我无法控制这些公共非静态内部类的使用(我知道理想情况下这些是私有的和静态的,以避免泄漏对“this”的引用),“MyInnerClass”的创建实例是否正确垃圾收集?
我已经通过覆盖finalize() 对此进行了自己的测试,看来这些实例正在正确地被垃圾收集,我只是希望对此进行澄清。
谢谢
【问题讨论】:
-
“集合的迭代器通常实现为集合的内部类。”帮助我理解了外部类和内部类的生命周期之间的关系。
标签: java garbage-collection inner-classes