Eclipse 是否使用 Java Instrumentation API 进行热代码替换
我最近有一个任务,我必须使用热代码替换功能。因此,我使用工具中提供的Java Instrumentation API.jar。
eclipse是否使用一些不同的逻辑来热替换新的类文件或使用相同的Java API?我试图从一些地方阅读,但不清楚:
Eclipse Java 调试器通过调试通道将新的类文件传输到另一个 JVM
Eclipse Hot Code Replace 中的这一行并不明确。
我最近有一个任务,我必须使用热代码替换功能。因此,我使用工具中提供的Java Instrumentation API.jar。
eclipse是否使用一些不同的逻辑来热替换新的类文件或使用相同的Java API?我试图从一些地方阅读,但不清楚:
Eclipse Java 调试器通过调试通道将新的类文件传输到另一个 JVM
Eclipse Hot Code Replace 中的这一行并不明确。
我相信eclipse使用相同的逻辑,它们都依赖于一个名为JVMTI的本机接口。JVMTI 提供了用于检查状态以及控制在 Java 虚拟机中运行的应用程序的执行的工具。
在 Java Instrumentation 实现中有一个 JVMTI 的代理。要与 vm 通信并执行某些任务的代理。它还具有重新定义类方法。
Eclipse Java调试器或其他工具使用JPDA(Java Platform Debugger Architecture),而JPDA主要有三个部分(JVMTI,JDWP,JDI)。JVMTI充当调试者,JDI充当调试器,JDWP充当它们之间的通信通道。
最后,他们都与JVMTI交谈,并且它使用相同的逻辑。
不可以,调试器通常使用 JDI。
com.sun.jdi.VirtualMachine#redefineClasses
有关详细信息,请参阅以下链接。http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/index.html