5
- 通过阅读arthas的相关代码,我了解到,当执行 java -jar arthas-boot.jar 时,内部通过 Process 执行了命令 java -jar arthas-core
- arthas-core 在启动时会 attach到目标进程, 并执行 loadAgent(arthas-agent)
- arthas-agent 中的 agentmain方法会初始化 ArthasBootstrap 。 在初始化ArthasBootstrap时候,提供了一个 shutdown勾子,勾子会执行 ArthasBootstrap#destroy 方法
我的疑问是:当我们kill arthas-boot.jar 进程时,会触发 ArthasBootstrap#destroy 吗? 如果不会触发 shutdown勾子,那已经增强过的字节码,在arthas-boot.jar进程停止的时候,是如何做到自动reset呢? ArthasBootstrap实例是在 premain 初始化的,是否可以理解成这是在目标进程中初始化的实例,也就是只有在目标进程关闭时才会触发对应的勾子呢?这个地方比较迷惑