安装:
wget wget https://alibaba.github.io/arthas/arthas-boot.jar
启动java程序,
java -jar arthas-boot.jar 会检测正在运行的java进程,选择进程进行监控
idea中配置Alibaba Cloud Tookit 插件,远程操作服务器Arthas.
需idea 2018.1 版本以上
安装后可以本地远程连接服务器,上传文件或者进入Terminal 操作Arthas.
场景:如果生产环境有bug,本地环境无法复现,又没有日志输出,如果临时增加日志重启又会破坏现场,像这种不改变method及Field等逻辑的增加代码,可以利用jdk提供的java.lang.instrument.Instrumentation中的redefineClasses和retransformClasses接口,一个重新定义class,一个修改class,替换已经存在的class文件,于是我们可以跳过java编译器,直接写字节码文件,于是有了可以用来直接编辑字节码的框架,可以注入修改类的方法,动态创造一个新的类,最著名的框架就是ASM,cglib、spring等框架中对于字节码的操作就是建立在ASM上的。Arthas 利用了jdk5引入的Instrument和jdk6引入的Attach API ,实现了java动态追踪。redine 可以动态修改class文件。
更多Arthas 使用方法,查询官方文档
https://alibaba.github.io/arthas/index.html