簡體   English   中英

為什么android在完成活動后沒有清理內存?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM