[英]Why android does not clean up memory after finishing activity?
在我的情況下,我有兩個名為A(主要活動)和B(兒童活動)的活動。 A將開始B(B使用Glide圖像庫具有一些圖像加載內容)。
如果我使用android內存監視器獲得內存分配,我可以清楚地看到內存分配增長。這是完全正常的,因為我們在活動中做了一些與圖像相關的事情B.Image附加。
所以我的問題是如果我按下活動B中的按鈕它將進入活動A並且分配的內存將不會被清除。內存分配仍將保持相同的數量。
這是正常的Android行為嗎?
如果沒有,我怎樣才能手動清理內存?
我手動運行GC如下,但同樣的結果沒有運氣:(。
在活動B中
@Override
protected void onDestroy() {
super.onDestroy();
System.gc();
}
1)在finish();
時調用OnDestroy
finish();
被調用,只需按下后退按鈕就不會調用此方法,除非您對其進行編程。
2) System.gc();
在onDestroy中將無法工作,因為您的activity B
仍在onDestroy
處於活動狀態。 一旦activity B
完全終止,您應該從其他活動中調用此方法。
3)如果將活動上下文泄漏到長期存在的對象/線程/等,則即使調用onDestroy
,活動也將保留在內存中。 (內存泄漏)
注意:調用System.gc();
不僅僅是釋放你的記憶,它可能不會根據情況執行GC。 在這里查看詳細信息: 為什么調用System.gc()是不好的做法?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.