JDK自带的性能监控工具

一、命令

1、jps

查看当前运行的所有java进程

2、jinfo

1)查看jvm启动参数

2)修改jvm运行参数(启动参数有部分支持运行时修改)

3、jmap

查看内存中类的加载状态,内存的参数,内存的各个区状态,dump内存;

1
2
3
4
jmap -histo pid
jmap -histo:alive pid // 手动触发垃圾回收
jmap -heap pid
jmap -dump

4、jhat

网页方式打开分析jmap导出的dump文件;

5、jstack

查看线程栈,常用于定位线程死锁,CPU使用率高;

NOTE:为什么cpu100%仍能响应jstack?

CPU时分时调度,接收jstack命令的线程会被分配时间片执行。

6、jstat

实时监控运行时内存各个区的内存使用状态,常用于JVM内存调优

二、案例

1、CPU 100%

1)top 找到CPU高的进程,假设为pid

2)top -H -p pid 找到进程中CPU使用高的线程,假设为tid

3)jstack pid 打印线程栈,从中找出tid的线程栈,定位问题代码

评论