记录一次使用Arthas的过程
Arthas是Alibaba开发的一款线上监控诊断产品。
文档地址:https://arthas.aliyun.com/doc/
在学习AOP时,想要查看运行时生成的代理类的结构,于是了解到Arthas这款产品。
说一下使用Arthas的操作:
-
下载Arthas~~(其实它就是一个jar)~~,并启动它。
1
2curl -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.jar
、arthas-agent.jar
、arthas-client.jar
等,当arthas-boot.jar
程序没有找到这些jar时,会从网络上下载,所以如果运行环境(线上局域网)没有联网,就需要直接下载arthas-bin.zip
文件的,下载地址为:https://github.com/alibaba/arthas/releases -
执行
java -jar
后,Arthas会扫描正在运行的java进程,并列举出1、2、3。。。输入【1】,进入目标进程。
-
输入
sc *UserService*
,模糊查找类名为 UserService 的class。sc
是“Search-Class”的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息。 -
输入
jad aop.UserService$$EnhancerBySpringCGLIB$$e31ac034
,就可以查看到运行时的代理类了。jad
命令将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码,便于理解业务逻辑。 -
在 Arthas Console 下,输入
quit
退出当前 Arthas 客户端。输入stop
关闭 Arthas 服务端,所有 Arthas 客户端也会退出。