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]
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 监控
- jprofiler监控linux下的tomcat
- 分享一个Jprofiler 7X 注册码,亲测好用
- 【Linux运维入门】Jprofiler9 远程监控Linux下JBoss
- JProfiler入门笔记
- JProfiler8在ubuntu14上没有界面,提示HeadlessException
- JProfiler的详细使用介绍(JVM对象内存线程监测工具)
- 在linux服务器上远程调试jprofiler最方便的方法
- Jprofile(一) - 连接本地服务器
- Java剖析工具JProfiler与IntelliJ IDEA集成的全步骤
- Java剖析工具JProfiler进行远程剖析
- Java剖析工具JProfiler入门使用教程:离线剖析和触发器
- 查看dump信息
- JProfiler学习笔记二
- JProfiler学习笔记一
- Jprofiler远程连接linux项目监控
- jprofiler主要功能简介及内存泄漏分析示例
- Jprofiler工具安装及使用
- Jprofile(三) - 查看线程CPU耗时
- jprofiler监听远程linux上的tomcat