您的位置:首页 > 其它

Jprofile(二) - 查找内存泄露

2016-07-15 15:53 351 查看
1. 点击Telemetries -> Memory,可以看到内存使用情况图形





2. 执行应用程序某个步骤后,如果出现以下图形说明在每次GC之后内存没有完全被回收到初始状态,存在泄露










3. 随后点击Live Memory -> All Object -> MarkCurrent 保存当前对象以及内存使用状态,状态条由红色转变为绿色








4.再次运行上次执行的操作,就可以看到本次操作与上一步保存的状态之间的差异,也就是本次操作所创建出来的新的对象(红色部分)








5. 这些新创建的对象还暂时是存放在Eden区的,所以我们要通过执行GC来回收这些新创建的对象,使内存使用状态回到第三部保存的状态(也就是消除红色区域)








6. 点击Run GC之后可以看到,新创建的对象确实被回收了(红色区域消除)

    但是如果红色区域没有消失,那么说明程序存在内存泄露问题,需要跟踪查看对象是被谁长时间引用没有释放了

    右键还有红色区域的行 -> Show Selection In Heap Walker -> OK








7. 点击References -> Incomimg references(谁引用了它) 或者 Outgoing references (它引用了谁) -> 右键选中那个谁 -> Show Source 就可以查看引用它时候的源码了(提前是要先引入源码,见Jprofile
一)


[b]


[/b]



[b]8. 也可以通过图的方式查看,选中Graph就可以了[/b]

[b]


[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Jprofiler