我不面臨內存泄漏問題,但我需要知道內存泄漏是如何發生的。形式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