我有以下示例,我不确定为什么这会导致内存泄漏?我不能把头缠住吗?!
public class MyLeakActivity extends Activity {
// static reference to evil
private static final Evil e;
public MyLeakActivity() {
e = new Evil();
}
private final class Evil {
}
}
提前感谢。
问候Fabian
您应在创建新对象之前检查e == null。
[在这里看……这篇文章是针对Android开发的。
https://dzone.com/articles/a-troublesome-legacy-memory-leaks-in-java
我认为您的设计可能永远都不允许将封闭的类进行gc'd。除非您有非常充分的理由使用非静态内部类(可能出于范围原因),否则,一个好的经验法则是始终从内部类声明为静态开始。