jhat 分析内存泄露如何使用mat分析Android应用程序内存泄漏

如何使用MAT分析Android应用内存泄露,开发Adroid应用时,经常会遇到内存溢出,内存泄露问题,这里介绍一种方法来检测内存泄露。使用AdroidStudio,AdroidDeviceMoitor配合Eclie的MATMemoryAalyzer工具来分析adroid内存泄露。
开发Android应用时,经常会遇到内存溢出,内存泄露问题,这里介绍一种方法来检测内存泄露。使用AndroidStudio,AndroidDeviceMonitor配合Eclipse的MAT(MemoryAnalyzer)工具来分析android内存泄露。工具/原料AndroidStudioEclipseMemoryAnalyzer1.5.01、新建测试应用1新建一个Android测试应用。填写好应用的名称,以及保存位置后,直接下一步到最后点击“Finish”。步骤阅读步骤阅读步骤阅读步骤阅读2添加一个测试Activity:Activity2。步骤阅读步骤阅读3添加测试代码ActivityHelper:这里用常用的线程长时间执行,导致外部ActivityDestroy时还持有activity的内容导致内存泄露。主要代码如下:publicclassActivityHelper{  privateContextmContext;  publicActivityHelper(Contextcontext){     this.mContext=context;   }  /**  *打印ActivityName  */  publicvoidprintActivityName(){     for(inti=0;i>\"openheapdump\"步骤阅读3点击下面的“Action”里的“Histogram”,然后搜索ActivityHelper得到如下结果步骤阅读4右击其中的一个,选择“MergeShortestPathstoGCRoots ”>>\"excludeallphantom/weak/softetcreferences..\"步骤阅读5可以看到,ActivityHelper本应该被释放,但是因为thead持有其中的mContext,而context是activity2里的,所有造成了内存泄露。解决方法:合理用thread,当activity2,destroy时,需要及时的停止掉thread。可以设置activityhelper的while(true)改为设置变量,如while(notshutdown),然后再destory里调用activityhelper,设置其notshutdown为false即可。步骤阅读END

本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/MWrBgPEwmz.html

(0)

相关推荐