一、Linux环境
-
top 常用于分析引起高CPU的工具。经典四步走:
1、top查询出高CPU的Java进程 2、top -Hp pid 查询出高CPU的线程号 3、转化线程号为十六进制 printf "%x" tid 4、jstack pid |grep tid(十六进制的)。通常能定位到具体的Java代码。 -
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
参数说明:
二、JDK自带
-
jps
用于查找Java进程ID、jvm参数.
| 命令参数 | 说明 |
|---|---|
| -q | 只输出进程ID,不显示类名称 |
| -m | 显示Java进程的参数 |
| -l | 显示主进程的完整路径 |
| -v | 显示JVM的参数 |
2.jstat
- jmap
查看内存,用于定位量大的对象。常用jmap -histo:live pid | head -10 显示前十的类信息
-
jstack
查看堆栈,结合top使用更佳。
三、
-
JConsole
图形化界面的监控工具,谁用谁知道。
-
Visual VM
免费功能同上
四、参考:
《实战JAVA虚拟机》 葛一鸣