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就可以了