引子

这段时间项目新版本要发了,所以跟着QA分析性能测试和压力测试,用了平时不怎么用的很多工具:

  • jmap
    jmap -heap pid → 查看堆的使用状况信息 
    jmap -histo:live pid | less → 堆中活动的对象以及大小 
    jmap -dump:format=b,file=eclipse_heap.bin pid → Dump堆信息
  • jstat,可以查看很多内容 jstat -gcutil -h 20 pid 1000 100 → 查看Java进程GC的情况,1000ms统计一次gc情况统计100次
    jstack,查看jvm线程运行状态,是否有死锁现象等等信息 
    jstack pid → Dump线程信息
  • jinfo,查看jvm配置信息
  • jps
  • jconsole,图形界面。可以持续收集内存、线程信息,并以曲线的方式显示出来。 
    # 这个工具真正要做的功能是查看JMX Bean的信息,性能分析中并不关心JMX信息。
  • mat :idea: ,分析内存Dump,查找内存泄漏。http://www.eclipse.org/mat/
  • JProfiler,商业 Profile工具。查看内存、CPU的使用,强劲

VisualVM在JDK1.6 Update7之后的版本中推出,就放在bin目录下面。

VisualVM在的官方网站在 https://visualvm.dev.java.net 。JDK1.6 Update7之前的版本可以单独下载使用。

VisualVM使用简单,几乎0配置,功能还是比较丰富的,几乎囊括了其它JDK自带命令的所有功能。

  • 内存信息
  • 线程信息
  • Dump堆(本地进程)
  • Dump线程(本地进程)
  • 打开堆Dump。堆Dump可以用jmap来生成。
  • 打开线程Dump
  • 生成应用快照(包含内存信息、线程信息等等)
  • 性能分析。 :idea: CPU分析(各个方法调用时间),内存分析(各类对象占用的内存)
  • ……

PS:

跟着QA做性能测试和压力测试,很多收获和感触。

  • 虽然有UI工具,尤其是商业的工具如JProfiler,功能异常强大,但是命令行工具还是非常有市场的。

    • 线上出问题时,命令行能方便和快速的Dump出Heap信息和线程信息,然后再对Dump分析;或是JVM信息,如GC次数、JVM参数。命令行对目标的产生的压力小,UI工具可能无法连上。
    • JDK自带命令行是环境标配的,你总是可以使用。UI可能要安装,等装好,菜都凉了。
  • 往往是对工具的不了解才不能解决问题,JDK自带的工具已经可以解决很多问题了。强大的商业工具往往只是增加学习难度。
  • 只有测试得出的结果才是可信的,之前的推测往往不可靠的。
  • 系统地收集和保证数据,这样当发现问题时,就有更可以用作判断的信息。

参考资料

  • 好用的性能分析工具–VisualVM
  • 可与jprofiler/yourkit媲美的java诊断工具Visualvm
  • visualvm的官方网站: https://visualvm.dev.java.net/download.html 一个Eclipse插件,启动时附带启动visualvm来作性能分析:https://visualvm.dev.java.net/eclipse-launcher.html

from: http://oldratlee.com/352/tech/java/jvisualvm.html

VisualVM——JDK自带的性能分析工具相关推荐

  1. 使用vs自带的性能诊断工具

    visual studio是个强大的集成开发环境,内置了程序性能诊断工具.下面通过两段代码进行介绍. static void Main( string[] args){Test1();Test2(); ...

  2. Java 性能分析工具一览(JDK自带)

    Jdk自带的监控程序 1. jstat 分析JVM HEAP占用情况 2. jps 查看JVM 进程 3. jmap 分析内存对象占用情况 4. jstack 查看JVM 调用堆栈情况 5. hppr ...

  3. 超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下

    如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然.别慌,这里有一款低开销.自带火焰图.让你大呼好用的 Java 性能分析工具 - async ...

  4. Jvisualvm--JAVA性能分析工具

    JDK自带的JAVA性能分析工具.它已经在你的JDK bin目录里了,只要你使用的是JDK1.6 Update7之后的版本.点击一下jvisualvm.exe图标它就可以运行了. 这里是VisualV ...

  5. java 对比工具_Java几款性能分析工具的对比

    在给客户进行应用程序维护的过程中,我注意到一些关于高负载条件下的性能问题.理论上,增加对应用程序的负载会使性能有所下降,但是我认为性能下降的比率远远高于负载的增加,同时我也发现,性能可以通过改变应用程 ...

  6. 4大JVM性能分析工具详解,及内存泄漏分析方案

    谈到性能优化分析一般会涉及到: Java代码层面的,典型的循环嵌套等 还会涉及到Java JVM:内存泄漏溢出等 MySQL数据库优化:分库分表.慢查询.长事务的优化等 阿里P8架构师谈:MySQL慢 ...

  7. Java几款性能分析工具的对比

    在给客户的应用程序维护的过程中,我注意到在高负载下的一些性能问题.理论上,增加对应用程序的负载会使性能等比率的下降.然而,我认为性能下降的比率远远高于负载的增加.我也发现,性能可以通过改变应用程序的逻 ...

  8. 5款Java性能分析工具的对比

    在给客户的应用程序维护的过程中,我注意到在高负载下的一些性能问题.理论上,增加对应用程序的负载会使性能等比率的下降.然而,我认为性能下降的比率远远高于负载的增加.我也发现,性能可以通过改变应用程序的逻 ...

  9. java性能检测工具_Java自带的性能监测工具之jmap

    本文继续介绍Java自带的性能监测工具,本文使用jmap工具来玩~ jmap (Java Memory Map) 命令可以生成Java应用程序的堆快照和对象统计信息,对生成的堆快照进行分析,可以分析堆 ...

最新文章

  1. R语言ggplot2可视化条形图可视化控制底部和x轴之间没有空格实战:即条形图的底部直接和坐标轴连接
  2. 阿里云新一代关系型数据库 PolarDB 剖析
  3. 【Java 泛型】泛型用法 ( 泛型编译期擦除 | 上界通配符 <? extends T> | 下界通配符 <? super T> )
  4. php中绘画控制包括什么,PhpStorm中绘画UML
  5. 电脑版企业微信_靠谱的企业客户管理系统电脑版下载
  6. 线性表之顺序存储结构相关算法学习
  7. 验证控件;正则表达式;
  8. 成功在MP4封装的H264视频中提取能播放的裸流
  9. 视频编解码(十四):机顶盒调试编解码器显示总结
  10. 计算机图形学(一)——数据压缩:道格拉斯普克法
  11. linux shell将字符串分割数组
  12. html5浏览器提示翻译,IE浏览器自动翻译网页设置方法
  13. 开始Flex Builder 3
  14. 智能电视无法进入服务器,三星智能电视无法连接到服务器怎么办
  15. 三个免费的无版权图片站
  16. Android监听系统输入法键盘弹出显示与隐藏事件
  17. 某小说App返回数据 解密分析
  18. 【基础】java操作word,自动更新目录/域
  19. 医疗器械行业按下“加速键”,华瑭医疗的总代生意却并不好做
  20. Java new一个对象

热门文章

  1. Java Math 类中的新功能--浮点数
  2. android 8.0 移除静态注册广播
  3. android parcelable 详细介绍
  4. 机器学习算法加强——数据清洗
  5. 深度学习(主要是CNN)用于图片的分类和检测总结
  6. 每日一博 - 延时任务的多种实现方式解读
  7. MyBatis源码-解读Executor的三个实现类之SimpleExecutor(简单执行器)
  8. 实战SSM_O2O商铺_28【商品】商品添加之Dao层的实现
  9. Spring-基于注解的配置[02自动装载bean]
  10. Vim不常见但是很实用的命令技巧