




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用JProfiler监控程序运行情况Add by king 20090512我们在日常的开发过程中,难免遇到程序写得有漏洞的时候,比如数据库连接未释放啊,基于JMX,JMS的操作连接未释放啊,过多的对象创建啊,程序的性能 瓶颈啊等等,到了项目开发后期,常常会因为很早之前写得不太好得代码段而造成整个系统得运行效率下降,严重的则会造成系统崩溃。如何很好的解决这些隐藏得 问题呢?就要使用Jprofile工具对我们的系统进行从cpu,memory,thread方面的分析了。一、系统配置安装好Jprofile,操作过程如下:首先要破解jprofile,解压缩JProfiler 5.1.2 crack.zip,把其中的两个文件windows和windows-x64覆盖jprofiler5bin目录中的同名文件,然后在控制台中输入命令java Keygen,就可以取得序列号,例如: L-FLN#11360-19tzrht1k4u2z9#2010,把序列号,注意必须要在jdk1.5以上的环境才能获取序列号。下一步选择应用服务器点击finish就开始这样我们就可以看到jprofiler对我们的系统应用进行的实时的监控了,一般的最常用的要算是Memory View 和Thread View,其中都可以进行进行filter,这样,如果你看到某些对象一直在上升并得不到释放,或者某些线程在直线上升,你就应该大致的知道问题出在哪里了吧。二、主要功能简介1内存剖析 Memory profiler JProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。 所有对象 显示类或在状况统计和尺码信息堆上所有对象的包。你可以标记当前值并显示差异值。 记录对象 Record objects 显示类或所有已记录对象的包。你可以标记出当前值并且显示差异值。 分配访问树 Allocation call tree 显示一棵请求树或者方法、类、包或对已选择类有带注释的分配信息的J2EE组件。 分配热点 Allocation hot spots 显示一个列表,包括方法、类、包或分配已选类的J2EE组件。你可以标注当前值并且显示差异值。对于每个热点都可以显示它的跟踪记录树。 2堆遍历 Heap walker 在JProfiler的堆遍历器(Heap walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有五个视图: 类 Classes 显示所有类和它们的实例。 分配 Allocations 为所有记录对象显示分配树和分配热点。 索引 References 为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功能。还能提供合并输入视图和输出视图的功能。 数据 Data 为单个对象显示实例和类数据。 时间 Time 显示一个对已记录对象的解决时间的柱状图。 3 CPU 剖析 CPU profiler JProfiler 提供不同的方法来记录访问树以优化性能和细节。线程或者线程组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。CPU视图部分包括: 访问树 Call tree 显示一个积累的自顶向下的树,树中包含所有在JVM中已记录的访问队列。JDBC,JMS和JNDI服务请求都被注释在请求树中。请求树可以根据Servlet和JSP对URL的不同需要进行拆分。 热点 Hot spots 显示消耗时间最多的方法的列表。对每个热点都能够显示回溯树。该热点可以按照方法请求,JDBC,JMS和JNDI服务请求以及按照URL请求来进行计算。 访问图 Call graph 显示一个从已选方法、类、包或J2EE组件开始的访问队列的图。 4 线程剖析 Thread profiler ,如下图所示:对线程剖析,JProfiler提供以下视图: 线程历史 Thread history 显示一个与线程活动和线程状态在一起的活动时间表。 线程监控 Thread monitor 显示一个列表,包括所有的活动线程以及它们目前的活动状况。 死锁探测图表 Deadlock Detection 显示一个包含了所有在JVM里的死锁图表。 目前使用的监测器 Current monitor useage 显示目前使用的监测器并且包括它们的关联线程。 历史检测记录 History usage history 显示重大的等待事件和阻塞事件的历史记录。 监测使用状态 Monitor usage statistics 显示分组监测,线程和监测类的统计监测数据。 5VM 遥感勘测技术 VM telemetry 观察JVM的内部状态,JProfiler提供了不同的遥感勘测视图,如下所示: 堆 Heap 显示一个堆的使用状况和堆尺寸大小活动时间表。 记录的对象 Recorded objects 显示一张关于活动对象与数组的图表的活动时间表。 垃圾回收 Garbage collector 显示一张关于垃圾回收活动的活动时间表。 类 Classes 显示一个与已装载类的图表的活动时间表。 线程 Threads 显示一个与动态线程图表的活动时间表。三、实战Memory View应用内存长期占用并导致系统不稳定一般有两种可能: 1. 对象被大量创建而且被缓存,在旧的对象释放前又有大量新的对象被创建使得内存长期高位占用。 表现为:内存不断被消耗、在高位时也很难回归到低位,有大量的对象在不断的创建,经过很长时间后又被回收。例如:在HttpSession中保存了大量的分页查询数据,而HttpSession的会话超时时间设置过长(例如:1天),那么在旧的对象释放前又有大量新的对象在第二天产生。 2. 另一种情况就是内存泄漏问题 表现为:内存回收低位点不断升高(以每次内存回收的最低点连成一条直线,那么它是一条上升线);内存回收的频率也越来越高,内存占用也越来越高,最终出现Out of Memory Exception的系统异常。 我们做了系统的内存泄漏的测试工作.操作步骤如下:1.Jprofiler打开系统.2.LR对系统进行压力测试,系统里的CLASS产生大量的对象3.Jprofiler中按F4进行垃圾回收4.哪个class没回收回去的当然就有问题存在了.实例如下如图所示,内存经过HttpSession超时后,并强制gc后,仍然有大量的对象没有释放。例如:m.security.MenuNode,仍然有807个实例没有释放。 我们继续追溯发现,这些MenuNode首先存放在一个ArrayList对象中,然后发现这个ArrayList对象又是存放在WHsessionAttrVO对象的Map中,WHsessionAttrVO 对象又是存放在ExternalSessionManager的staic Map中(名称为sessionMap),如下图所示。 我们发现m.WHsessionAttrVO中保存了EJBSessionId信息(登录用户的唯一标志,由用户id+登录时间戳组成,每天都不同)和一个HashMap,这个HashMap中的内容有: ArrayList: 内有MenuTreeNodes(菜单树节点) HashMap: 内有操作人员代码信息 CurrentVersion:当前版本号 CurrentTime:当前系统时间WHsessionAttrVO这个对象的最终存放在ExternalSessionManager的static Map sessionMap中,由于ExternalSessionManager是一个全局的单实例,不会释放,所以它的成员变量sessionMap中的数据也不会释放,而Map中的Key值为EJBSessionId,每天登录的用户EJBSessionId都不同,就造成了每天的登录信息(包括菜单信息)都保存在sessionMap中不会被释放,最终造成了内存的泄漏。四、使用心得1、JProfiler监控是要消耗系统资源的,所以一般情况下不要用于性能测试时候的监控。 2、如果要用于相对大压力情况下,可以有选择的打开监控项,不用所有都打开。主要有两个,一个是内存监控,打开的情况下可以查找内存分配热点。一个是CPU监控,打开的情况下可以查看CPU使用热点。 如图所示,红笔标注部分。如果两个都关闭的话,还是可以跑一定压力的,同时还可以监控对象数量。3、个人认为最好用的(也是用的最多的)是查询当前的对象的数量。数量监控很重要,如果你使用了单例,那么你只会看到有一个对象存在,如果多
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南京市2025江苏南京市城建中等专业学校南京市城建职业培训中心南京市建筑职工笔试历年参考题库附带答案详解
- 东莞市2025广东东莞市城建工程管理局招聘聘用人员10人笔试历年参考题库附带答案详解
- 2025河北新质科技有限公司招聘13人笔试参考题库附带答案详解
- 2025春季甘肃酒泉市敦煌文旅集团有限公司招聘26人笔试参考题库附带答案详解
- 2025年第2批次浙江宁波前湾产业集团有限公司招聘9人笔试参考题库附带答案详解
- 2025年合肥包河区人力资源开发有限公司招聘3人笔试参考题库附带答案详解
- 2025天津新誉资产管理有限公司所属运营类企业选聘干部人才6人笔试参考题库附带答案详解
- 2025四川长虹电源股份有限公司招聘试验技术主办岗位32人笔试参考题库附带答案详解
- 危险源安全管理培训课件
- 危险化学企业安全培训课件
- 医学装备质量管理分析报告
- Unit 3 Understanding ideas The Road to Success课件 2023-2024学年高中英语外研版选择性必修第一册
- 项目需求分析文档(模板)
- 国际机场飞机维修机库施工组织设计
- 液压泵站使用说明书
- E190飞机舱门开关
- 儿科学腹泻病
- GB/T 3871.9-2006农业拖拉机试验规程第9部分:牵引功率试验
- GB/T 3836.4-2021爆炸性环境第4部分:由本质安全型“i”保护的设备
- GB 17840-1999防弹玻璃
- 文学鉴赏-课件
评论
0/150
提交评论