JVM 分析工具

103 阅读2分钟

一、Linux环境

  1. top 常用于分析引起高CPU的工具。经典四步走:

     1、top查询出高CPU的Java进程
     
     2、top -Hp  pid 查询出高CPU的线程号 
     
     3、转化线程号为十六进制  printf "%x" tid 
    
     4、jstack pid |grep tid(十六进制的)。通常能定位到具体的Java代码。
    
  2. vmstat 用于统计CPU、内存、swap情况

[apps@kdzs-webtest1-66476f7c8c-ddlbk /]$ vmstat 1 4
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0      0 9519352 604284 29167556    0    0     1    24    0    0  4  2 94  0  0
 2  0      0 9501892 604284 29170120    0    0     0   116 24868 34399  4  1 95  0  0
 2  0      0 9491668 604284 29176040    0    0     0   965 33663 40515  7  2 90  0  0
 1  0      0 9504064 604284 29168176    0    0     0    92 32235 44421  5  2 94  0  0

参数说明:

image.png

二、JDK自带

  1. jps

    用于查找Java进程ID、jvm参数.

命令参数说明
-q只输出进程ID,不显示类名称
-m显示Java进程的参数
-l显示主进程的完整路径
-v显示JVM的参数

2.jstat

image.png

  1. jmap

  查看内存,用于定位量大的对象。常用jmap -histo:live pid | head -10 显示前十的类信息

image.png

  1. jstack

    查看堆栈,结合top使用更佳。

image.png

三、

  1. JConsole

    图形化界面的监控工具,谁用谁知道。

  2. Visual VM

    免费功能同上

四、参考:

《实战JAVA虚拟机》 葛一鸣