1.监控Android中的内存溢出泄漏
堆2.使用方法比较简单:
·选择DDMS视图,打开“Devices”视图和“Heap”视图。
·点击选择需要监控的进程,即可例如:上图中I.选择-system_process
· 在Devices视图界面中选择“updateheap”图标。
· 点击“Heap”中的“CauseGC”按钮view(相当于向虚拟机提交GC请求)
3.在堆视图中选择要监视的类型。通常我们会看到数据对象整体大小的变化。TotalSize值会稳定在一个有限的范围内,也就是说,他们说程序中的代码是好的,不存在程序中对象不被回收的情况。如果代码不释放对象引用,则每次GC后数据对象的总体大小不会显着减小。随着交易数量的增加,总规模将不断增加。(注:选择数据对象后,继续应用程序以查看总体大小变化。)如果总体大小确实增加且没有回滚,则意味着程序没有释放资源引用。
2.解决Android中的内存泄漏:
使用DDMS工具,您可以确定应用程序中是否存在内存泄漏,然后找到其所在的具体代码段。问题出现了最后找到问题了吗?内存分析工具MATMemoryAnalyzerTool解决了这个问题。MAT工具是一个Eclipse插件,也有一个单独的RCP客户端。MAT工具分析文件是.hprof。该文件存储特定进程的内存快照。判断内存泄漏具体位置的MAT方法如下:
①创建.hprof文件。在Eclipse中创建.hprof文件的方法有很多种,不同Android版本创建.hprof文件的方法略有不同,但总体思路是相同的。在DDMS界面中,我们选择要分析的应用程序进程。从设备浏览界面上方的一排图标按钮中,同时选择“UpdateHeap”和“DumpHPROFfile”按钮。此时DDMS会自动生成该文件。当前所选进程的.hprof文件。
②将.hprof文件导入到MAT工具中。MAT工具将自动分析并生成报告。单击“DominatorTree”按钮并按包对其进行分组。选择特定的包类并右键单击。在弹出的窗口中,从菜单中选择Listobjects﹥Withincomingreferences,就会列出所有可疑的类。右键单击该元素并选择PathtoGCRoots﹥excludeweak/softreferences。MAT工具还将过滤掉与程序关联的所有内存泄漏类。通过这种方式,您可以追踪产生内存溢出泄漏的特定类代码。
上一篇:java内存泄漏和内存溢出
下一篇:android内存溢出和内存泄漏