JVM调优使用工具02(VisualVm)

2020/12/07 Jvm

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, 可以看到可视化的垃圾回收过程。

Search

    Table of Contents