(8)Thread查看当前线程信息,查看线程的堆栈 。
参数说明:
id 线程id[n:] 指定最忙的前N个线程并打印堆栈[b] 找出当前阻塞其他线程的线程[i <value>] 指定cpu占比统计的采样间隔,单位为毫秒
1、一键展示当前最忙的前n个线程并打印堆栈 。
thread -n 3
2、不带参数时,显示所有线程的信息
3、显示指定线程的运行堆栈
therad id
4、找出当前阻塞其他线程的线程
thread -b
目前只支持找出synchronized关键字阻塞住的线程,如果是java.util.concurrent.Lock,目前还不支持
5、指定采样时间间隔
thread -i 时间
例如:thread -n 3 -i 1000
(9)jvm查看当前JVM信息
信息说明:
THREAD相关COUNT: JVM当前活跃的线程数DAEMON-COUNT: JVM当前活跃的守护线程数PEAK-COUNT: 从JVM启动开始曾经活着的最大线程数STARTED-COUNT: 从JVM启动开始总共启动过的线程次数DEADLOCK-COUNT: JVM当前死锁的线程数文件描述符相关MAX-FILE-DESCRIPTOR-COUNT:JVM进程最大可以打开的文件描述符数OPEN-FILE-DESCRIPTOR-COUNT:JVM当前打开的文件描述符数
(10)sysprop查看当前jvm的系统属性(system property)
1、查看所有属性
sysprop
2、查看某个属性
sysprop java.version
3、修改某个属性值
sysprop key value
(11)sysenv查看当前jvm的环境属性(system environment variables)
1、查看所有环境变量
sysenv
2、查看单个环境变量
sysenv USER
(12)getstatic可以查看类的静态属性
getstatic class_name field_name
如果该静态属性是一个复杂对象,还可以支持在该属性上通过ognl表示进行遍历,过滤,访问对象的内部属性等操作 。
例如,假设n是一个Map,Map的Key是一个Enum,我们想过滤出Map中Key为某个Enum的值,可以写如下命令
$ getstatic com.alibaba.arthas.Test n 'entrySet().iterator.{? #this.key.name()=="STOP"}'field: n@ArrayList[ @Node[STOP=bbb],]
(13)ognl执行ognl表达式
参数说明:
express 执行的表达式[c:] 执行表达式的 ClassLoader 的 hashcode,默认值是SystemClassLoader[x] 结果对象的展开层次,默认值1
1、调用静态函数
ognl '@java.lang.System@out.println("hello")'
2、获取静态类的静态字段
ognl '@demo.MathGame@random'
3、执行多行表达式,赋值给临时变量,返回一个list
$ ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}'@ArrayList[ @String[/opt/java/8.0.181-zulu/jre], @String[OpenJDK Runtime Environment],]
(14)dumpdump已加载类的bytecode到特定目录
参数说明:
class-pattern 类名表达式匹配[c:] 类所属 ClassLoader 的 hashcode[E] 开启正则表达式匹配,默认为通配符匹配
(15)classloader查看classloader的继承树,urls,类加载信息
classloader 命令将 JVM 中所有的classloader的信息统计出来,并可以展示继承树,urls等 。
可以让指定的classloader去getResources,打印出所有查找到的resources的url 。对于ResourceNotFoundException比较有用 。
参数说明:
参数名称 参数说明[l] 按类加载实例进行统计[t] 打印所有ClassLoader的继承树[a] 列出所有ClassLoader加载的类,请谨慎使用[c:] ClassLoader的hashcode[c: r:] 用ClassLoader去查找resource
1、按类加载类型查看统计信息
classloader
2、按类加载实例查看统计信息
classloader -l
3、查看ClassLoader的继承树
classloader -t
4、查看URLClassLoader实际的urls
classloader -c 5ffe9775
5、使用ClassLoader去查找resource
【推荐一个生产环境问题排查利器】$ classloader -c 226b143b -r META-INF/MANIFEST.MF
6、 查找类的class文件:
$ classloader -c 1b6d3586 -r java/lang/String.class
(16)redefine加载外部的.class文件,redefine jvm已加载的类 。
推荐阅读
- 工具推荐:静态代码分析工具清单
- 张飞是一个怎样的人物,评价张飞是什么样的人
- 中国第一个大一统王朝是哪个朝代,历代统一中国的有几个朝代
- 秦始皇不是第一个皇帝,为什么秦始皇是中国第一皇帝
- 程序员的核心竞争力
- 文鸳厉害嘛,文鸳和文鸯是一个人吗?
- 有哪些养胃的食物推荐
- 贾岛是一个什么样的人,贾岛的生平
- 萝卜怎么腌好吃又脆?
- 《金铲铲之战》阵容怎样搭配?