JVM调优使用工具02(VisualVm)
目录
可视化工具
1.jconsole
可视化监控、管理工具。它主要通过JMX的MBean对系统进行信息收集和参数动态调整。
使用比较简单,傻瓜化。
启动命令:
直接键入jconsole,就会弹出窗口。
可以选择本机进行和远程进程。
2.VisualVm
是目前监控以及故障排查最强大的工具之一。
JDK9以及更高不支持内置,需要单独下载
启动命令:
直接键入jvisualvm,就会弹出窗口。
可以选择本机进行和远程进程。
1.Overview窗口:
概览
2.Monitor窗口:
CPU,Heap,Classes,Threads曲线图;
Perform GC按钮, 执行垃圾回收;
heapdump 按钮,堆内存快照:
save as 另存
Summary 分析
3.Threads窗口:
特别关注:
Running //表示运行时花费的时间
Total //表示从创建到现在花费的时间
右上角,Thead Dump //线程快照,相当于可视化的jstack
4.Sampler抽样窗口:
1.CPU抽样(点击CPU):
CPU Samples:
1.cpu:
Total Time,这些线程从开始抽样到现在花费的时间
Total Time(CPU), 这些线程从开始抽样到现在占用cpu的时间
2.可以展开线程,查看当前线程执行调用栈:
点击热点按钮,可以发现当前线程调用最热的方法(两个小箭头之间的红色按钮)
Self Time(CPU) //自身花费时间
Total Time(CPU) //总共花费时间,包含调用其它方法时间
Thread CPU Times:
可以知道哪个线程花费的CPU时间最多:
红色圈1:各个线程所占用CPU的时间比
红色圈2:最近1秒的时间抽样,各个线程在1秒内花费CPU时间
2.内存抽样(点击Memory):
Heap histogram:
堆内存柱状图
Per thread allocations:
jvm为每个线程分配的内存,可以看出哪个线程占用的内存大。
5.Profiler性能分析:
性能分析,提供了程序运行期 方法级别 的处理器执行时间分析以及内存分析。
CPU性能分析、内存性能分析、JDBC性能分析。
可以配置想检查的范围。
注意事项:
1.执行性能分析,会对程序运行性能有比较大的影响,一般不建议在生产环境使用这项
功能。可以在开发测试环境去分析调优,也可以用JMC替代,JMC性能分析能力更强,
而且影响相对小很多。
2.类共享(类共享是一种共享类,从而提升加载速度、节省内存的技术)可能会导致执行
Profiler的应用崩溃,建议在执行Profiler的应用上添加-Xshare:off(VM参数上添加就行),
关闭类共享。否则,点击按钮的时候应用可能会崩溃。
配置性能分析参数:
点击左上角VisualVM-->Preferences:
可以配置想要监控的CPU,内存,Sql语句。
5.之间打开各种格式文件进行分析:
点击左上角File—>load
例如:打开hprof分析堆内存
Summary:
比较重要参数:
Classes by Number of Instances[view all] //指定类型个数对象倒叙排列
Classes by Size of Instances[view all] //指定类型占用空间的倒叙排列
Instaces by Size[view all] //当前堆内存里面每个对象所占用内存
Dominators by Retained Size[view all] // 未支配对象所保存的内存空间
假设堆内存不正常,我们可以点击view all,来查看哪个类型的对象占用最多
...
其它类似
5.使用插件
左上角Tools–>Plugins–>Availabel Plugins, 进一步增强功能。
例如Visul GC, 可以看到可视化的垃圾回收过程。