[alibaba/arthas]retransform 和 redefine 使用场景疑惑

2024-07-17 256 views
4
环境信息
  • arthas-boot.jar 或者 as.sh 的版本: 3.6.6
  • Arthas 版本: 3.6.6
  • 操作系统版本: centos7.9
  • 目标进程的JVM版本: java version "1.8.0_121"
  • 执行arthas-boot的版本: 3.6.6
重现问题的步骤
  1. 使用retransform 热更新后,jad class 没被还原,stop进程后再次jad 或者trace发现class被还原
  2. 使用redefine 热更新后,jad class 没被还原,stop进程后再次jad 或者trace发现class并不会被还原
期望的结果

retransform不是redefine的改版么?我记得redefine 只要jad就会被还原,怎么现在就算stop 后再次jad也不被还原了? 这里搞不懂到底用redefine还是retransform了。我的期望场景是不管任何操作都不应该还原,除非再次热更。

回答

2

仔细看wiki,还有 issue 里 jad 原理相关的。

8

好的