VisualVM——JDK自带的性能分析工具
2012-11-18 14:45
387 查看
引子
这段时间项目新版本要发了,所以跟着QA分析性能测试和压力测试,用了平时不怎么用的很多工具:jmap :idea:
jmap -heap pid → 查看堆的使用状况信息
jmap -histo:live pid | less → 堆中活动的对象以及大小
jmap -dump:format=b,file=eclipse_heap.bin pid → Dump堆信息
jstat,可以查看很多内容 :idea:
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,商业 :evil: 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
相关文章推荐
- VisualVM——JDK自带的性能分析工具
- Java性能分析工具JDK VisualVM
- 利用java自带的性能分析工具visualvm来分析java程序运行情况
- Jvisualvm是JDK自带的一款性能分析工具
- Java VisualVM(Java性能分析工具)插件安装及JDK版本对应插件中心地址
- 使用JDK自带的VisualVM进行Java程序的性能分析
- Java 性能分析工具一览(JDK自带)
- Java程序性能分析工具Java VisualVM(Visual GC)—程序员必备利器
- JDK下虚拟机性能监控以及故障分析工具
- Java程序性能分析工具Java VisualVM(Visual GC)—程序员必备利器
- perf学习-linux自带性能分析工具
- 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行
- JVM自带性能分析工具介绍——jmap和jhat
- Jdk自带性能查看工具
- 【转】VS2012自带的 性能分析 工具使用实例
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- Java自带性能分析工具
- VS2012自带的 性能分析 工具使用实例
- 程序员必备利器——Java程序性能分析工具Java VisualVM(Visual GC)
- JDK自带内存及线程分析工具