参数说明:
命令 详细说明id 线程id
[n:] 指定最忙的前N个线程并打印堆栈
[b] 找出当前阻塞其他线程的线程
[i] 指定cpu使用率统计的采样间隔,单位为毫秒,默认值为200
[--all] 显示所有匹配的线程
打印当前最忙的N个线程并打印堆栈
thread -n 3
thread 查看所有线程
thread 17: 显示指定线程的运行堆栈
thread -i: 指定采样时间间隔
thread -i 1000 : 统计最近1000ms内的线程CPU时间。
thread -n 3 -i 1000 : 列出1000ms内最忙的3个线程栈
运行程序时,会显示当前程序的实时信息,如qps, rt, 错误数, 线程池信息等等
数据说明:
ID: Java级别的线程ID
NAME: 线程名
GROUP: 线程组名
PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高
STATE: 线程的状态CPU%: 线程的cpu使用率。比如采样间隔1000ms,某个线程的增量cpu时间为100ms,则cpu使用率=100/1000=10%
DELTA_TIME: 上次采样之后线程运行增量CPU时间,数据格式为秒
TIME: 线程运行总CPU时间,数据格式为分:秒
INTERRUPTED: 线程当前的中断位状态
DAEMON: 是否是daemon线程
参数说明:
参数名称 详细说明id 刷新实时数据的时间间隔 (ms),默认5000ms
[n:] 刷新实时数据的次数
sc 命令
查看JVM已加载的类信息,通过SC我们可以看到我们这个类的详细信息,包括是从哪个jar包读取的,他是不是接口/枚举类等,甚至包括他是从哪个类加载器加载的。
参数说明:
参数名称 详细说明class-pattern 类名表达式匹配
method-pattern 方法名表达式匹配
[d] 输出当前类的详细信息,包括这个类所加载的原始文件来源、类的声明、加载的ClassLoader等详细信息。如果一个类被多个ClassLoader所加载,则会出现多次
[E] 开启正则表达式匹配,默认为通配符匹配
sc -d *CardInfo: 打印类的详细信息
sc -d -f *CardInfo:打印类的Fiedld信息
heapdump + jhat分析heapdump:类似于jmap命令
创建到指定文件夹下:
[arthas@365564]$ heapdump /usr/local/mxn/dump.hprof Dumping heap to /usr/local/mxn/dump.hprof ... Heap dump file created