1.常见的监控命令
- jstack Java堆栈跟踪工具
用于生成虚拟机当前时刻的线程快照(每一条线程正在执行的方法堆栈的集合),主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源的长时间等待。
一般步骤:(1)Linux下top命令查看各个进程的cpu使用情况;(2)top -Hp pid 可以查看该进程下各个线程的cpu使用情况;(3)获取到了占用cpu资源较高的线程pid,将该pid转成16进制的值 jstack pid;(4)查看分析thread dump,重点关注死锁(Deadlock) 、等待资源(Waiting on condition) 、等待获取监视器(Waiting on monitor entry) 、阻塞(Blocked)。 -
jstat 虚拟机统计信息监视工具
用于监视虚拟机各种运行状态信息的命令行工具,可以显示虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
jstat - gc 2764 250 20(每250毫秒查询一次进程2764垃圾收集状况,一共查询20次)结果大约如图所示
- jmap Java内存映像工具
用于生成堆转储快照(dump)