【死磕JVM】用Arthas排查JVM内存 真爽!我从小用到大 (2)

参数说明:

命令 详细说明
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个线程栈

dashboard 命令

运行程序时,会显示当前程序的实时信息,如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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydpzy.html