Ⅰ 如何快速定位android app是否存在內存泄露
確定是否存在內存泄露及具體是哪個程序造成,首先需要關注的是內存泄露已彈出out of memory對話框的情況。這種情況下,直接通過對話框即可得知是哪個應用的問題,然後再進一步分析該應用是否因內存泄露而導致了out of memory對話框的彈出。可以通過閱讀相關文檔如《如何診斷Android應用中的內存泄露》中介紹的各種方法進行分析,確定是否有內存泄露以及具體是哪個進程造成的內存泄露。
生成hprof文件並使用MAT進行分析是另一種有效的手段。生成hprof文件可以通過在DDMS中選中進程並點擊窗口左上角的mp hprof file按鈕直接生成,或者通過在程序中添加特定代碼來生成。推薦使用代碼生成hprof,然後使用《Android內存泄露利器(hprof篇)》中的工具自動提取多個hprof文件,然後使用MAT進行比較分析。在MAT中導入.hprof文件後,MAT會自動解析並生成報告,通過點擊Dominator Tree,並按照Package進行分組,選擇自己定義的Package類,比較各個類在不同時期的RetainedHeap,找出可疑類。然後選擇該類,右鍵點擊,選擇show retained Set項,查看Retained Heap的詳細信息,進一步找出嫌疑項。
在代碼中查找內存泄露的具體原因,根據在MAT找到的內存泄露信息,可以參照《Android內存泄漏簡介》進一步在代碼中查找內存泄露的原因並進行修復。如果代碼相對簡單,也可以直接根據《Android內存泄漏簡介》中的內容,在代碼中查找內存泄露的原因並解決。