我正在檢查我的應用程序的內存泄漏/使用情況,並發現了一些奇怪的東西,目前爲止我只在Android 1.6和2.1中看到過。點擊左右在應用程序一點,我運行「亞行外殼dumpsys meminfo中」我的應用程序後,我看到以下內容:Android內存使用和內存中的對象未在1.6和2.1中發佈
DUMP OF SERVICE meminfo:
Applications Memory Usage (kB):
Uptime: 34639912 Realtime: 153524709
** MEMINFO in pid 5778 [com.app.myapp] **
native dalvik other total
size: 14336 4679 N/A 19015
allocated: 13971 4139 N/A 18110
free: 280 540 N/A 820
(Pss): 2986 4181 13491 20658
(shared dirty): 972 3948 620 5540
(priv dirty): 2876 3224 10976 17076
Objects
Views: 545 ViewRoots: 4
AppContexts: 32 Activities: 31
Assets: 2 AssetManagers: 2
Local Binders: 43 Proxy Binders: 79
Death Recipients: 2
OpenSSL Sockets: 1
SQL
heap: 91 dbFiles: 0
numPagers: 4 inactivePageKB: 0
activePageKB: 0
Asset Allocations
zip:/data/app/com.app.myapp.apk:/resources.arsc: 119K
正如你所看到的,沒有什麼是得到釋放/ GC'd,該活動是堆放,AppContexts等,直到應用程序崩潰與OutOfMemoryError。這在2.2+上不會發生。
任何人都可以告訴我爲什麼會發生這種情況嗎?我有一種感覺,它要麼是簡單的,要麼是我的應用程序有點奇怪,但是我爲什麼會發生這種情況而感到不知所措。
僅供參考,我已經在1.6和2.1模擬器以及我的G1運行1.6中轉載了此內容。最近用戶的崩潰報告也顯示了這一點,他們在Droid Eris上運行2.1。如果需要更多的細節/代碼來幫助解決這個問題,請告訴我。
## UPDATE ##
感謝來自MOMO的信息,我可以跟蹤了一些內存泄漏問題,這大大削減活動/ AppContexts的,將顯示在對象的量meminfo列表。
該數字現在降低到我的應用程序中實際活動的數量左右,因此在較早版本的Android上它似乎會顯示您的應用程序消耗的對象總量。在新版本上它不會,儘管這可能僅僅是我的測試設備上的情況。
的工具目錄中找到這仍然是相同的應用程序(我的同伴釣魚)?如果是的話,重現的步驟是什麼? – momo
是的。基本上只需點擊從活動到活動,你就會開始看到堆積的物體。據我所知,似乎只發生在1.6和2.1中。 – hooked82
在下面的答案中,您對MAT進行了評論。您是否嘗試了以下步驟:1.查看實例數量是否爲卡住的活動。 2.查看GC的根路徑?如果活動數量堆積如常,我通常會這樣做,特別是如果GC的根路徑不是ViewRoot。如果它不是ViewRoot,那麼其他東西就會阻止你需要切割參考。如果您仍然需要調試,我可以詳細解答這個過程。我無法在您的應用上專門運行MAT,因爲它來自市場 – momo