首页 > 其他分享 >Arthas常用的命令(三)--monitor、jad 、stack

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

时间:2023-06-23 14:00:52浏览次数:49  
标签:MathGame monitor -- demo primeFactors Arthas 匹配 jad stack

monitor:监控方法的执行情况

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

  • 参数说明

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

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

执行结果如下:

  • 结果说明 :
监控项 说明
timestamp 时间戳
class Java类
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)

参考资料:

https://blog.csdn.net/lydms/article/details/125238249

标签:MathGame,monitor,--,demo,primeFactors,Arthas,匹配,jad,stack
From: https://www.cnblogs.com/expiator/p/17499070.html

相关文章

  • CF932D Tree
    题目链接题目见链接。题解知识点:倍增。注意到,题目其实要求我们,每次要选最近一个权值大于等于自己的祖先,可以看出固定点生成出来的序列是固定的。因此,考虑设\(f_{i,j}\)为从\(j\)出发按规则向上走\(2^i\)次的点,设\(b_{i,j}\)为从\(j\)出发按规则向上走\(2^i\)次的......
  • TIER 2: Archetype
    TIER2:Archetype扫描nmap使用nmap进行扫描目标IP,发现目标是Windows服务器,开放SMB和SQLServer服务。SMBSMB之前已经接触过,在Windows和Linux操作系统上连接SMB服务器的方法:windows上使用:使用资源管理器、cmd的net、powershell的New-PSDrive等。lin......
  • springboot整合mysql和clickhouse多数据源
    1、添加依赖<!--MyBatis-PlusStarter--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version></dependency>......
  • Java四大引用详解:强引用、软引用、弱引用、虚引用
    原文链接:https://blog.csdn.net/ChenRui_yz/article/details/126315260Java引用从JDK1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期,这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。强引用强引用是最普遍的引用,一般把一个对象赋......
  • sequelize风格的动态表达式解析
    背景之前看过nodejs,sequelize的orm过滤很丰富,写起来很方便具体文档地址过滤条件示例const{Op}=require("sequelize");Post.findAll({where:{[Op.and]:[{a:5},{b:6}],//(a=5)AND(b=6)[Op.or]:[{a:5},{b:6}],......
  • postgresql中fork的含义
    pg_relation_size ( relation regclass [, fork text ])→ bigintComputesthediskspaceusedbyone “fork” ofthespecifiedrelation.(Notethatformostpurposesitismoreconvenienttousethehigher-levelfunctions pg_total_relation_size......
  • java当中int类型数据转换为byte类型的数据处理过程
    巨人的肩膀,感谢:https://blog.csdn.net/u013386606/article/details/80526486大前提:目前来说所有数据在内存当中都是以补码的形式存在。原码:原码(trueform)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该......
  • k8s安装部署集群
    说明这里准备了三台服务器,一台作为主节点(Master),两台作为子节点(Node)每个步奏分为:ALL=所有服务器Master=主节点Node=子节点详细步骤查看ip(ALL)ipaddr这里地址很重要,最好保存下来,后续会用到配置HostName(ALL)配置sudohostnamectlset-hostnamemasters......
  • Java基础之基本数据类型封装类的缓存
    巨人的肩膀:https://blog.csdn.net/hnjcxy/article/details/1237872091、Java中基本数据类型byte、short、char、int、long、float、double、boolean有对应的封装类型:Byte、Short、Character、Integer、long、Float、Double,Boolean其中Byte、Short、Character、Integer、Long、Bo......
  • 值得关注的全球11家开源公司
    值得关注的全球11家开源公司公司名称:Cfengine成立时间:2008年在挪威奥斯陆注册,2009年6月在美国注册。地点:奥斯陆,挪威,圣彼得堡,佛罗里达州公司产品:Cfengine3(社区版),着重进行服务器配置管理。CfengineNova(商业版),用于服务器生命周期管理软件建设......