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

时间:2013-01-19 12:11:18

标签: java eclipse

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

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

  

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

Eclipse Hot Code Replace中的这一行不明确。

2 个答案:

答案 0 :(得分:7)

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

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

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

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

答案 1 :(得分:4)

不,调试器通常使用JDI。

com.sun.jdi.VirtualMachine#redefineClasses

有关详细信息,请参阅以下链接。 http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/index.html