我只是想知道如何使用android中的Memory analyzer工具。请告诉我如何解决特定项目的内存泄漏问题。有人可以给我一步一步的程序。
答案 0 :(得分:23)
这就是全部。您将列出可能的泄漏列表,但其中一些是误报。我建议您运行一个想要多次检查泄漏的活动,然后再次运行MAT。
答案 1 :(得分:4)
答案 2 :(得分:1)
当您没有使用android.permission.WRITE_EXTERNAL_STORAGE时,写入hprof会失败。作为在设备上进行测试时的特殊情况,请检查您的SD卡是否仅在Charge ONLY模式下连接,否则您将无法在SD卡上进行写入访问
答案 3 :(得分:0)
安装MAT。
转到工具 - > Android - > Android设备监视器(DDMS)
在设备下方的左上角,选择项目名称和 点击更新堆。
然后点击转储HPROF 文件并将其保存在桌面上。
然后运行命令提示符并指出Android-sdk目录。
例如: hprof-conv位于E目录中。所以跑吧
命令为cd android/sdk/platform-tools
。
然后最后通过引用此doc来运行此命令以转换此文件格式以在MAT中读取它。
E:\ Android \ sdk \ platform-tools> hprof-conv "C:\Users\Steve\Desktop\yourfilename.hprof"
"C:\Users\Steve\Desktop\leakage.hprof"
现在您的文件将转换为leak.hprof.check此文件和 在MAT中打开它。
修改:点击详细信息,然后它会显示类名。在Left Click -> Path To GC Roots ->With all references
中。然后显示类名。
答案 4 :(得分:0)
Square开源的内存分析工具:LeakCanary。
LeakCanary的核心是MAT。
答案 5 :(得分:0)
我建议您查看Leak Canary。它本身不是内存分析器,而是更多的泄漏检测器。只需使用您的应用程序,打开和关闭活动,让图书馆完成它的工作。它甚至会告诉你发生泄漏的地方。泄漏发生后,只需给泄漏分析仪一些时间来完成其工作 - 通常需要大约2分钟或更长时间才能找到泄漏源。