目录
1.Arthas简介
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
2.准备Demo
写一个Java Demo(ArthasDemo),用来测试Arthas修改代码的功能,每隔1秒输出hello world,运行起来。
public class ArthasDemo {
public static void main(String[] args) throws InterruptedException {
while(true) {
Thread.sleep(1000);
print();
}
}
public static void print() {
System.out.println("hello world!");
}
}
3.启动Arthas
Arthas下载地址:
文章使用的arthas是目前最新版3.6.9.
启动arthas,java -jar arthas-boot.jar
输入4,连接ArthasDemo(根据自己实际要连接应用选择)。
4.Arthas命令
Arthas命令官方文档:命令列表 | arthas
help命令
查看arthas命令:
jad命令
查看当前运行Class文件
dashboard命令
当前系统的实时数据面板
trace命令
查看方法调用链路,例如查看ArthasDemo.print()调用链路:
5.使用retransform命令热更新代码
retransform命令介绍文档:
1、修改ArthasDemo.print()打印内容,在hello world后面加几个=号,重新编译ArthasDemo.class。
由于IDEA项目路径含有空格,arthas命令读取不到文件,将class文件放到D:\\arthas目录下。
2、执行retransform命令,更新新的class文件到JVM内存中:
retransform D:\\arthas\\ArthasDemo.class
在未重启服务的情况下,输出已经由【hello world】变成了【hello world!=================】。
重新查看一下更新后的class文件,虽然看不到增加的字符串,但明显看出print字符边长了。
jad com.rliz.arthas.ArthasDemo