• Java性能分析工具之Jprofiler初体验


    近日,老大跟我频繁抱怨java项目耗了他家服务器太多cpu资源、占了太多数据库连接、项目进度太慢贻误战机等等——不免感叹java程序员的艰辛,像我一初出茅庐山野村夫,真不懂这些;心生歉疚,茶饭不思,夜不能寐,眼看郁结成疾,亏得邂逅Jprofiler,才给了我生的希望——

    【JProfiler】是一个全功能的 Java 剖析工具,专用于分析 J2SE  J2EE 应用程序。它把 CPU 、执行绪和内存的剖析组合在一个强大的 应用中。 JProfiler 可提供许多 IDE 整合和应用服务器整合用途。 JProfiler 可以查看当前应用的对象、对象引用、内存、CPU使用情况、线程、线程运行情况(阻塞、等待、效能瓶颈内存泄露 memory leaks等),同时可以查找应用内存使用得热点,即:哪个对象占用的内存比较多;或者CPU热点,即:哪儿方法占用的较大得CPU资源。它让你得以对heap walker 作资源回收器的 root analysis ,可以轻易找出内存溢出; heap 快照( snapshot )模式让未被参照( reference )的对象、稍微被参照的对象、或在终结( finalization)队列的对象 都会被移除;整合精灵以便剖析浏览器的 Java 外挂功能。

    对该工具的使用总结如下:

      1. JProfiler监控是要消耗系统资源的,所以一般情况下不要用于性能测试时候的监控。
      2. 如果要用于相对大压力情况下,可以有选择的打开监控项,不用所有都打开。主要有两个,一个是内存监控,打开的情况下可以查找内存分配热点。一个是CPU监控,打开的情况下可以查看CPU使用热点。 
        如图所示,红笔标注部分。如果两个都关闭的话,还是可以跑一定压力的,同时还可以监控对象数量。
      3. 个人认为最好用的(也是用的最多的)是查询当前的对象的数量。数量监控很重要,如果你使用了单例,那么你只会看到有一个对象存在,如果多了就说明程序有问题了。同样,如果应用进行一系列操作,检查一下该销毁的对象是否还继续存在,如果没有释放,就得考虑是否存在内存溢出了。
      4. JProfiler还提供了一个比较好的检查内存溢出得工具。他可以查找某个对象的引用情况,即:当你发现某个该释放掉的对象没有释放,就可以看一下哪个实例在引用它,找到了根即找到了溢出点。
        具体操作如下:在 “Memory Views”界面中右键选择你要监控的对象,选择第一项“Take Heap Snapshot for Selection”,选择完成后会进入“Heap Walker”界面,界面下面提供几个功能,选择“References”即可 。如图:
      5. JProfiler提供不同的观察粒度,提供对类的监控、对包的监控、对J2EE组件的监控,同时过滤器也比较好用,直接定位你关注的包或类即可。
      6. JProfiler的监控可能与应用之间存在一定时间差,所以有些时候需要等待刷新,才能显示正确系统情况。

    参考链接:

    一、下载安装:

    1、下载地址:

    http://www.ej-technologies.com/download/jprofiler/files

    2、安装图解:

    http://blog.sina.cn/dpool/blog/ArtRead.php?nid=4d5428240100svit&page=all&show=sel&vt=3

    3、jprofiler注册码 激活:

    按默认选择“Single or evaluation license”
    Name 和 Company 随意
    -----------------------忧郁的分割线---------------------------
    L-Larry_Lau@163.com#23874-hrwpdp1sh1wrn#0620
    L-Larry_Lau@163.com#36573-fdkscp15axjj6#25257
    L-Larry_Lau@163.com#5481-ucjn4a16rvd98#6038
    L-Larry_Lau@163.com#99016-hli5ay1ylizjj#27215
    L-Larry_Lau@163.com#40775-3wle0g1uin5c1#0674
    --------------------------------------------------------------
    L-Larry_Lau@163.com#7009-14frku31ynzpfr#20176
    L-Larry_Lau@163.com#49604-1jfe58we9gyb6#5814
    L-Larry_Lau@163.com#25531-1qcev4yintqkj#23927
    L-Larry_Lau@163.com#96496-1qsu1lb1jz7g8w#23479
    L-Larry_Lau@163.com#20948-11amlvg181cw0p#171159
    激活码

    二、部署入门:

    http://blog.csdn.net/djy1135/article/details/2304465

    http://www.blogjava.net/fine/archive/2007/05/07/115671.html

    详见:

    http://www.cnblogs.com/serendipity/articles/1963904.html

    http://www.blogjava.net/anymobile/articles/28248.html

  • 相关阅读:
    SLAM+语音机器人DIY系列:(二)ROS入门——3.在ubuntu16.04中安装ROS kinetic
    SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构
    2017年 年计划
    125. Valid Palindrome
    一道多树递归面试题
    顺序表查找和有序表查找
    c++中常见概念、关键字等的区别
    两个栈实现一个队列,两个队列实现一个栈
    150. Evaluate Reverse Polish Notation
    堆排序
  • 原文地址:https://www.cnblogs.com/qsl568/p/3370328.html
Copyright © 2020-2023  润新知