我不面临内存泄漏问题,但我需要知道内存泄漏是如何发生的。形式here下面的代码给内存泄漏。活动中的静态变量导致内存泄漏?
private static Drawable sBackground;
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
TextView label = new TextView(this);
label.setText("Leaks are bad");
if (sBackground == null) {
sBackground = getDrawable(R.drawable.large_bitmap);
}
label.setBackgroundDrawable(sBackground);
setContentView(label);
}
有人能给我一个关于内存泄漏如何发生的完整解释吗?以及gc如何收集参考资料?
也是plz解释下面的代码是否泄漏内存? ,如果它是如何发生的?
private static Context context;
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
TextView label = new TextView(context);
label.setText("Leaks are bad");
setContentView(label);
}
我觉得代码是从这个博客[避免在Android上的内存泄漏(http://www.curious-creature.org/2008/12/18/avoid-memory-画泄漏-上的Android /)。这个博客也解释了内存泄漏的发生。 – 2014-03-25 05:55:55
我已经阅读过它,但我需要知道垃圾收集器如何无法收集对象,当Drawable附加到视图时,视图被设置为drawable上的回调。在上面的代码片断中,这意味着drawable对TextView有一个引用,它本身对活动有引用,所以当gc试图收集这些对象时,确切的问题是什么? – sky