arthas
- 下载命令
- curl -O https://arthas.aliyun.com/arthas-boot.jar
- 启动命令
- java -jar arthas-boot.jar
- 退出session
- quit或者exit
- 中止arthas进程
- stop
- dashbord命令
- thread命令
- thread 列出所有线程
- thread 1 列出线程ID=1的线程堆栈
- thread -n 3 列出cpu占用率最高的3个线程
- thread -i 1000 -n 3 每1000ms采样列出cpu占用率最高的3个线程
- thread -b 列出blocked的线程
- thread –state waiting 列出所有waiting状态的线程
- jvm命令
- 包含vm启动项、jdk版本、class path、lib path
- 包含类加载信息(加载类数量,未加载类数量)
- 包含编译信息(编译器64位、总编译耗时)
- 包含垃圾回收信息
- 包含内存信息heap、no-heap
- 包含操作系统信息
- 包含线程信息(当前线程数、当前守护线程数、历史最大线程数、历史启动过的总线程数、死锁线程数)
- 包含文件信息(允许的最大文件描述符数量、打开文件描述符数量)
- vmoption命令
- vmoption:列出所有vm选项参数key value
- vmoption [key] [value] : 修改key这个vm属性,改成value这个值
- getstatic命令
- getstatic 类名 属性名 :查看类的静态属性。 例如
getstatic com.demo.MyCache cap
- getstatic 类名 属性名 :查看类的静态属性。 例如
- ognl命令
- ognl
表达式
执行代码
- ognl
- sc命令
- Search Class: 查询类信息,例如
sc com.demo.*
查询com.demo包下所有类信息
- Search Class: 查询类信息,例如
- sm命令
- Search Method: 查询类的方法,例如
sm com.demo.MyCache
查询MyCache这个类的方法 sm com.demo.MyCache -d
展示详细信息
- Search Method: 查询类的方法,例如
- trace命令
trace class-pattern method-pattern
: 追踪类+方法的堆栈及耗时trace -E com.demo.ClassA|com.demo.ClassB method1|method2|save.* -n 100 -m 20 #cost>1000
- -E:开启正则表达式,之后可以用
|
(或)符号以及通配符监听多个class和多个method - -n 100 监听100次
- -m 20 最多监听20个类,默认50个
jdk命令
- 生成内存镜像dump文件
- jmap -dump:format=b,file=/data/log/dump.hprof 1
- 查询线程数量
jstack -l 1 | grep '线程名关键字' | wc -l
ps -mp 1 -o THREAD |wc -l
- 查询top进程占用资源
- top :所有进程
- top -Hp 1 : 进程id=1的线程
- 查进程栈
-
jstack -l 1 grep ‘nid=0x4e ‘ -A 20 //0x4e=78
-
- 查看进程(cpu、内存、启动时间、jvm启动项)
- ps -aux
- 查看线程
- ps -Lf 1
- 查gc
- jstat -gcutil 1
- 查top占用内存的Object
-
jmap -histo 1 head -20
-
NativeMemoryTracking
- 启动项:
-XX:NativeMemoryTracking=summary
, 级别: off, summary, detail - 命令:
jcmd VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown] [scale= KB | MB | GB]
- 查总结:
jcmd 1 VM.native_memory summary scale=MB
- 创建快照:
jcmd VM.native_memory baseline
- 查总结(对比快照):
jcmd 1 VM.native_memory summary.diff scale=MB