2

我正試圖分析Android應用程序的內存使用情況。我這樣做,使用GC是否保證釋放未使用活動的內存

adb shell dumpsys meminfo <package name> 

我的應用程序只有一個Activity,我大概重複步驟如下次打:

  1. 打開應用程序;
  2. 退出使用返回按鈕

這樣做的時候dumpsys十幾顯示,大約1-2我的Activities的情況下,仍然在內存中之後。在我點擊adb dumpsys幾次後,Activity計數降爲零。這是正常的嗎?如果這是一個泄漏,我不認爲Activity計數爲零。這是否意味着GC緩慢地要求記憶Activity對象?

+0

嘗試使用LeakCanary https://github.com/square/leakcanary分析應用程序的內存使用情況。您將能夠更輕鬆地查明問題。 –

+0

@EricBachhuber謝謝。我確實使用了泄漏金絲雀,並擺脫了泄漏。我現在留下的只是誤報,Leak Canary認爲活動已經泄露,後來又說「GC正在懶惰」。所以我認爲泄漏金絲雀明智我沒有泄漏。 – Bajji

回答

2

這是否意味着GC聲稱緩慢記錄活動對象?

通過按下後退按鈕完成Activity並不意味着它的實例將立即死亡並且內存GC -ed。 ActivityonDestroy()方法不是「終結者」。在開始新的Activity實例時,可以遇到這種情況,即「舊」號仍在內存中(作爲reference)。

如果是泄漏,我不希望活動數量下降到零。

如果你看到應用程序的進程中運行它不泄漏爲「活動計數下降到零」

在我打了adb dumpsys幾次之後,活動計數降爲零。這是正常的嗎?

是的,由於上述原因。