Jam*_*ner 15 java garbage-collection inner-classes
我有一个类似于以下的弹簧bean:
public class MyServiceImpl {
private MyDAO myDAO;
public class MyInnerClass implements SomeInterface<MyInnerClass> {
@Override
public MyInnerClass loadFreshObject(final String key) {
return myDAO.load(key);
}
}
}
Run Code Online (Sandbox Code Playgroud)
MyInnerClass正在Spring bean之外的代码中创建实例,但不保留对这些实例的引用.
假设我无法控制这些公共非静态内部类的使用(我知道这些将是私有的和静态的,以避免泄漏对'this'的引用),创建的'MyInnerClass'实例是否会被正确地垃圾收集?
我通过覆盖finalize()它来运行我自己的测试,看起来实例正确地被垃圾收集,我只是希望澄清这一点.
谢谢
Mic*_*ski 22
内部类的实例将根据正常规则进行垃圾收集(即,不再引用它们时).但是,内部类的每个实例都包含对其外部类的父实例的隐藏引用.这意味着如果对内部类的实例有任何实时引用,它们将阻止外部类的关联实例被垃圾回收.但它只适用于那个方向,而不是相反.
| 归档时间: |
|
| 查看次数: |
3534 次 |
| 最近记录: |