jprofiler之如何分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
jprofiler之如何分析
作者:丁风华 日期:2011-4-30
个人blog:/
说明:由于软件功能复杂繁多,这里只介绍最常用的功能,至于细微的详细功能请查看官方帮助文档
目录
一. 分析内存情况..........................................................................................................- 2 -
使用技巧:..................................................................................................................- 2 -
二. 分析堆遍历..............................................................................................................- 3 -
使用技巧:..................................................................................................................- 4 -
三. 分析CPU情况........................................................................................................- 4 -
使用技巧:..................................................................................................................- 5 -
四. 分析线程情况..........................................................................................................- 5 -
使用技巧:..................................................................................................................- 8 -
五. 使用遥感监测..........................................................................................................- 8 -
六. 使用快照比较..........................................................................................................- 9 -
一.分析内存情况
左则第一个按钮就是内存使用情况
的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。
注意下面的tab选项
all object是所有加载类的列表和在堆上分配的实例数。注意,只有JA V A1.5以上才会显示此图。在最上方还可以选择按不同类型进行查看,如类、包、组件等。
Recored objects 是已经记录的对象
Allocation call tree 是分配调用的树视图。是显示请求树或方法、类、包或对已选择类有带注释的分配信息的J2EE组件
Allocation hot spots view是显示所选类的对象被分配在哪儿的方法列表。注意:分配至少占总数的1%的方法才会被显示。
Class tracker是类跟踪
使用技巧:
1、在这里可以查看程序使用内存的情况,如果发现自己的方法在这里占有内存很大或是在某个时间段突然增加,就可以关注这个类或方法,是不是在写这个方法时用了占用大量内存的手法。在这里还可以跟踪到类源代码和byte code,使用方法参考官方资料。
2、这里在系统运行后可以使用mark按钮,以当前为参照对象,动态的观察内存使用变化其中绿色为参考时间点,竭色为当前时间的内存使用情况。这样就可以观察内存的使用,对象的创建和gc的使用情况等。
3、数量监控很重要,如果你使用了单例,那么你只会看到有一个对象存在,如果多了就说明程序有问题了。同样,如果应用进行一系列操作,检查一下该销毁的对象是否还继续存在,如果没有释放,就得考虑是否存在内存溢出了。
二.分析堆遍历
点击左边的堆遍历按钮,会显示堆里的信息,至于堆里显示的详细设置可
参考官方文档
对于堆里的信息很是繁多,在下方进行多种类型的查看,在这里可以进行非常详细的信息分析。
使用技巧:
可以查找某个对象的引用情况,即:当你发现某个该释放掉的对象没有释放,就可以看一下哪个实例在引用它,找到了根即找到了溢出点。在“Memory Views”界面中右键选择你要监控的对象,选择第一项“T ake Heap Snapshot for Selection”,选择完成后会进入“Heap Walker”界面,界面下面提供几个功能,选择“References”即可
三.分析CPU情况
左边点击cpu监控图标,可查看cpu的占用情况
这里可以查看程序对于cpu的使用情况。在下方可以以不同方式进行分析,可以查看访问树,热点和访问图等
使用技巧:
在这里可以观察某个时间段内方法对于cpu的使用情况,如果某个方法对cpu长时间的高频率占有,那程序肯定会慢,这时就要检查该方法中是否有什么非常耗时的计算,例如:在使用swing的事件线程中进行了复杂运算,长时间占有cpu,这时就要考虑对事件进行进行多线程操作等。
四.分析线程情况
点击左边的线程监控按钮可查看分析线程的有关情况