eclipse是否使用Java Instrumentation API替换热代码

Nar*_*hai 15 java eclipse

我最近有一个任务,我不得不使用热代码替换功能.所以我使用tools.jar中提供的Java Instrumentation API来完成它.

eclipse是否使用一些不同的逻辑来替换新的类文件或使用相同的Java API?我试着从一些地方读书,但不清楚:

Eclipse Java调试器通过调试通道将新类文件传输到另一个JVM

Eclipse Hot Code Replace中的这一行并不清楚.

sno*_*261 7

我相信eclipse使用相同的逻辑,它们都依赖于一个名为JVMTI的本地接口.JVMTI提供了检查状态和控制Java虚拟机中运行的应用程序执行的工具.

Java Instrumentation Implementation中有一个JVMTI代理.代理与vm对话并执行某些任务.它还有redefineClasses方法.

Eclipse Java调试器或其他工具使用JPDA(Java平台调试器架构),JPDA主要有三个部分(JVMTI,JDWP,JDI).JVMTI充当调试对象,JDI充当调试器,JDWP充当它们之间的通信通道.

最后,他们都与JVMTI交谈,并使用相同的逻辑.