1. 程式人生 > >Android記憶體洩漏查詢和解決adb shell dumpsys meminfo packagement

Android記憶體洩漏查詢和解決adb shell dumpsys meminfo packagement

1.通過adb shell dumpsys meminfo packageName來檢視記憶體使用狀況 在沒有開啟應用的情況下,該命令返回的資料是這樣的: 在這裡插入圖片描述

2.開啟這個應用的MainActivity,再通過命令檢視:

在這裡插入圖片描述 可以看到打印出來很多的資訊,而對於我們檢視Activity記憶體洩漏來說,只需要關注Activities和Views兩個資訊即可,在應用中存在的Activity物件有一個,存在的View物件有13個。 3.這時候我們退出這個Activity,在用命令檢視一下: 在這裡插入圖片描述 可以看到,Activity物件和View物件都在極短的時間內被回收掉了。再次開啟,退出,多次嘗試,發現情況都是一樣的。我們可以通過這種方式來簡單判斷一個Activity是否存在記憶體洩漏,最後是否能夠被回收。 4.再執行剛才的洩漏的例子,用命令檢視一下: 在這裡插入圖片描述

當我們連續開啟退出同一個頁面,然後使用命令檢視時,發現Activity存在13個,而View則存在了234個,而且沒有很快被回收,依次判斷應該是存在記憶體洩漏了。 等待10多秒,再次檢視,發現Activity和View的數量都變成了0。 在這裡插入圖片描述 上面的例子,是Handler臨時性記憶體洩漏,只要Handler post的程式碼塊執行完畢,被引用的Activity就能夠釋放。 除了臨時性記憶體洩漏,還有危害更大,直到程式結束才能被釋放的記憶體洩漏。