; ;

使用MAT 分析内存泄漏实战

在分析前可以阅读下这篇文章,很多内容就都知道了https://www.jianshu.com/p/738b4f3bc44b,下面我来分析上一篇文章内存泄漏的为问题

1。上一篇中已经生成了hprf的文件了,现在我们就对他进行分析,确认电脑已经安装了MAT工具,在MAT直接打开文件,就看到如下图,在点击

Leak Suspects 这个链接,查看内存泄漏

 

 

 2.问题显示,查看详情

 

 3.详细信息中 这一步就很看到其实arraylist这里的占用的实际堆有些多,需堆,和保留堆,在链接中有解释,

 

 t表示GC root到内存消耗聚集点的最短路径,如果某个内存消耗聚集点有路径到达GC root,则该内存消耗聚集点不会被当做垃圾被回收。也定位是arraylist,这个函数有问题,查看代码,发现list只增,不释放,代码已定位

 

 

4.其实有最方便的一种方式,抓取两个文件,进行对比 查看堆的大小,如果堆的某些数据持续上升,且不下降,就可能是存在问题,在线程诊断中也有提出main 函数中存在内存泄漏

 

posted @ 2019-10-20 22:07  做梦的人-  阅读(4807)  评论(0编辑  收藏  举报