【发布时间】:2017-01-12 08:34:28
【问题描述】:
public static MainActivity mainActivity ;
public static MainActivity instance() {
return mainActivity ;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navigation);
mainActivity = this;
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mainActivity != null) {
mainActivity = null;
}
}
为什么会内存泄漏?为什么我们说这篇文章很糟糕? 我想从GC原理来理解。
【问题讨论】:
-
来自对标记为重复的问题的回答:“该类分配了一大块内存(例如新字节[1000000]),将对其的强引用存储在静态字段中,然后存储在 ThreadLocal 中对自身的引用。”。由于 Activity 分配了大量内存(用于其视图)并且您将强引用放在静态字段中,因此您现在需要做的就是拥有一个具有更长生命周期引用该静态字段的类。那么你就会造成内存泄漏
标签: java android memory-leaks garbage-collection