gitee:arthas: Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具
api:进阶使用 | arthas
官网热更新demo:Arthas Tutorials
案例:
对已上线的/get接口中的helloArthas(1),1是写死的,如何在不停机的情况下将1改为2? -> 热更新代码
浏览器访问:/get接口
1. Arthas - 热更新代码
以下为了方便直接在window上进行操作,linux系统操作相同。
1. 首先下载arthas-boot.jar, 下载地址:https://arthas.aliyun.com/arthas-boot.jar
arthas: Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具
2. 运行 java -jar arthas-boot.jar,后会列出服务中所有的java服务,输入对应java进程的[序列号]后可对该java的操作。
3. jad命令反编译HelloController类, 需要反编译的类>输出目录
$ jad --source-only com.text.HelloController > C:\\Users\\cq\\Desktop\\HelloController.java
4. sc命令查找加载HelloController的classLoaderHash(类加载器的hash值)
$ sc -d *HelloController | grep classLoaderHash
5. mc命令生成HelloController.class并绑定classLoaderHash
$ mc -c 18b4aac2 C:\\Users\\cq\\Desktop\\HelloController.java -d C:\\Users\\cq\\Desktop
6. redefine命令重新编译HelloController.class
$ redefine C:\\Users\\cq\\Desktop\\com\\text\\HelloController.class
1.1. 测试热更新是否生效
2. 查看接口方法代码耗时
格式:trace [全限定类名] [类中的方法名]
例如:trace com.core.service.TeacherService search
可以看到每行行代码耗时多久。