Arthas相关命令

发布于:2025-09-14 ⋅ 阅读:(21) ⋅ 点赞:(0)

1. thread

  1. thread可以查看线程相关信息
  2. 具体参数有:
  • thread -n 3 指定最忙的3个线程并打印堆栈
  • thread -b (block)查看阻塞其他线程的线程
  • thread 线程id:查看线程id的线程信息
  • thread -i 1000 -n 3 : 每1000毫秒,采样最繁忙的3个线程
  • thread --state WAITING 查看所有WAITING状态的线程

2. jvm命令

  1. jvm命令可以查看jvm相关信息

3. sysprop命令

  1. sysprop:查看所有jvm属性,还可以修改属性
sysprop java.version
  • 修改属性
sysprop user.country CN

4. sysenv

  1. sysenv:system environment variables,查看当前jvm的环境变量信息,无法修改

5. vmoption

  1. 查看,更新java虚拟机相关参数
  2. vmoption PrintGCDetails
  3. 修改:vmoption PrintGcDetails true(指定值即可)

6. getstatic

  1. 通过getstatic命令可以方便的查看类的静态属性
  2. getstatic 包名.类名 属性名

7. ognl

  1. 调用静态函数:
ogml '@java.lang.System@out.println("hello")'
# ongl '@类名@方法名(参数)'
  1. 获取静态类的静态字段
ognl '@demo.MyRandom@random'
# ongl '@静态类@静态方法'
  1. 执行多行表达式,赋值给临时变量,返回一个List
ognl '#value1=@System@getProperty("java.home"),#value2=@System@getProperty("java.runtime.name"),{#value1,#value2}'

8. sc

  1. sc:search class:搜索类,查看jvm已加载类的信息
sc demo.* :查看该包下的所有类
sc demo.* -d 查看类的详细信息
sc demo.* -df 不仅包含类的详细信息还包含类的成员变量
sc -e 用正则表达式匹配,默认用通配符匹配

9. sm

  1. 查看已经加载类的方法信息
    sm java.lang.String
    sm 类 -d 类中的方法的详细信息

10 jad

  1. 反编译,把字节码反编译成源代码
jad java.lang.String 反编译String 类
jad java.lang.String --source-only 只显示源码
jad java.lang.String trim 反编译String类中的trim方法

11 mc

  1. 在内存中把源代码编译成字节码文件
    mc /root/hello.java -d /root/demo 将hello.java 文件编译到/root/demo目录下生成二进制文件

12 redefine

  1. 把新生成的字节码文件在内存中执行

  2. redefine不能增加成员变量和方法,只能在现有的方法上进行修改

  3. 正在跑的函数,没有退出,就不会生效
    redefine /root/demo/hello.class

  4. 通过10、11、12 三个命令实现字节码反编译、替换字节码、让字节码重新作用到jvm

13. dump

  1. 将当前运行的类的字节码保存到指定目录,默认目录:/logs/arthas/classdump/
  2. dump 类名
  3. dump demo.* 使用正则表达式

14 classloader

  1. 获取类的加载信息,可以将jvm中所有的classloader的信息统计出来,并展示成继承树
  2. 可以通过classloader查找资源在那个目录下面,对于ResourceNotFoundException非常有用
  3. classloader:命令会返回所有类名字,每个类的实例数量,所有加载类的总数
  4. 主要命令
  • classloader -l 与classloader差不多,增加了hashcode和parent类加载器,如果为null表示顶层加载器
  • classloader -t 列出所有Classlader的继承树
  • classloader -c hashcode -r xxx资源名,通过某个类加载器(arthas)查找对应资源在那个包里面
  • classloader -c hashcode --load java.lang.String 通过类加载器加载某个类

15. monitor

  1. 监控指定类中方法的执行情况
  2. monitor -c 5 类名 方法名 每5秒监控一次类中的方法,主要包含:调用次数、调用成功量、调用失败量、rt、失败率

16. watch

  1. 观察方法的执行调用情况
  2. -b:在方法调用之前观察
  3. -e:在方法exception之后观察异常信息
  4. -s:在方法返回之后观察
  5. -f:在方法结束之后,观察finally
  6. -x:返回结果遍历深度 默认1

17 trace命令

  1. 对方法内部路径进行追踪,并输出方法路径上每个节点的耗时

18 stack

  1. 输出当前方法被调用的调用路径

19 tt

  1. time-tunnel时间隧道
  2. 记录指定方法每次调用入参和返回信息,并能对这些不同时间下调用的信息进行观测
  3. tt -t:记录某个方法在一段时间的调用
  4. tt -l 显示所有已经记录列表
  5. tt -n 次数 只记录次数
  6. tt -s 搜索表达式 对应表达式记录列表
  7. tt -i 索引号 指定索引号的内容

网站公告

今日签到

点亮在社区的每一天
去签到