Arthas常用的命令(三)--monitor、jad 、stack

文章介绍了使用Arthas工具监控指定类的方法执行情况,包括执行次数、成功率、耗时等,并展示了如何设置统计周期。此外,还演示了jad反编译代码以查看方法实现,以及如何通过stack命令查看调用路径,包括基于执行时间的过滤。
摘要由CSDN通过智能技术生成

monitor:监控方法的执行情况

监控指定类中方法的执行情况
用来监视一个时间段中指定方法的执行次数,成功次数,失败次数,耗时等这些信息

  • 参数说明

方法拥有一个命名参数 [c:],意思是统计周期(cycle of output),拥有一个整型的参数值

参数名称参数说明
class-pattern类名表达式匹配
method-pattern方法名表达式匹配
-E开启正则表达式匹配,默认为通配符匹配
-c统计周期,默认值为120秒
  • 示例: 监控demo.MathGame类,并且每5S更新一次状态。
monitor *.MathGame primeFactors -c 5

执行结果如下:

  • 结果说明 :
监控项说明
timestamp时间戳
classJava类
method方法(构造方法、普通方法)
total调用次数
success成功次数
fail失败次数
rt平均耗时
fail-rate失败率

jad 反编译

  • jad 反编译代码:
jad 包的路径.类名 方法名

如果不确定包的路径,也可以用 *. 匹配,比如 Demo类,就是 *.Demo。

示例如下:

jad *.MathGame primeFactors

结果如下:

可以看到反编译后的代码。

[arthas@18228]$ jad *.MathGame primeFactors

ClassLoader:
+-sun.misc.Launcher$AppClassLoader@1909752
  +-sun.misc.Launcher$ExtClassLoader@a14482

Location:
/D:/arthas/math-game.jar

       public List<Integer> primeFactors(int number) {
/*44*/     if (number < 2) {
/*45*/         ++this.illegalArgumentCount;
               throw new IllegalArgumentException("number is: " + number + ", need >= 2");
           }
           ArrayList<Integer> result = new ArrayList<Integer>();
/*50*/     int i = 2;
/*51*/     while (i <= number) {
/*52*/         if (number % i == 0) {
/*53*/             result.add(i);
/*54*/             number /= i;
/*55*/             i = 2;
                   continue;
               }
/*57*/         ++i;
           }
/*61*/     return result;
       }

Affect(row-cnt:1) cost in 103 ms.

stack 参数说明

作用:输出当前方法被调用的调用路径。

参数名称参数说明
class-pattern类名表达式匹配
method-pattern方法名表达式匹配
condition-express条件表达式
-E开启正则表达式匹配,默认为通配符匹配
-n执行次数限制
-m指定 Class 最大匹配数量,默认值为 50。
  • stack查看调用路径:
[arthas@19440]$ stack *.MathGame primeFactors
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 63 ms, listenerId: 25
ts=2023-06-09 22:57:47;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@1909752
    @demo.MathGame.primeFactors()
        at demo.MathGame.run(MathGame.java:24)
        at demo.MathGame.main(null:-1)
  • 根据执行时间来过滤:
[arthas@19440]$ stack demo.MathGame primeFactors '#cost>0.5'
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 29 ms, listenerId: 29
ts=2023-06-09 23:06:37;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@1909752
    @demo.MathGame.primeFactors()
        at demo.MathGame.run(MathGame.java:24)
        at demo.MathGame.main(null:-1)

参考资料:

Arthas使用教程(8大分类)_arthas教程_ha_lydms的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值