Jprofile(二) - 查找内存泄露

本文介绍了如何使用JProfiler工具查找内存泄露问题。通过观察Memory图表,检查GC后内存是否恢复到初始状态。利用Live Memory功能标记当前状态,对比运行操作前后的差异,识别新创建的对象。如果GC后红色区域未消除,表明存在内存泄露。通过Heap Walker查看引用关系,结合源码分析定位泄露原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 一



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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值