Arthas是Alibaba开发的一款线上监控诊断产品。

文档地址:https://arthas.aliyun.com/doc/


在学习AOP时,想要查看运行时生成的代理类的结构,于是了解到Arthas这款产品。

说一下使用Arthas的操作:

  1. 下载Arthas~~(其实它就是一个jar)~~,并启动它。

    1
    2
    curl -O https://arthas.aliyun.com/arthas-boot.jar
    java -jar arthas-boot.jar

    注意:直接使用arthas-boot.jar运行 arthas ,是需要联网的。具体流程如下:

    当执行 arthas-boot.jar 之后,首先是扫描当前运行环境的Java进程,当输入下标数字,进入对应Java进程时,是需要执行其他jar包的,例如arthas-core.jararthas-agent.jararthas-client.jar等,当 arthas-boot.jar 程序没有找到这些jar时,会从网络上下载,所以如果运行环境(线上局域网)没有联网,就需要直接下载 arthas-bin.zip 文件的,下载地址为:https://github.com/alibaba/arthas/releases

  2. 执行 java -jar后,Arthas会扫描正在运行的java进程,并列举出1、2、3。。。

    image-20230920172607140

    输入【1】,进入目标进程。

    image-20230920172703659

  3. 输入 sc *UserService*,模糊查找类名为 UserService 的class。

    image-20230920172810887

    sc是“Search-Class”的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息。

  4. 输入 jad aop.UserService$$EnhancerBySpringCGLIB$$e31ac034,就可以查看到运行时的代理类了。

    jad 命令将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码,便于理解业务逻辑。

  5. 在 Arthas Console 下,输入 quit 退出当前 Arthas 客户端。输入 stop 关闭 Arthas 服务端,所有 Arthas 客户端也会退出。