我最近有一项任务,我必须使用代码热替换功能。所以我使用 tools.jar 中提供的 Java Instrumentation API 完成了它。
eclipse 是否使用一些不同的逻辑来热替换新类文件或使用相同的 Java API? 我尝试从某些地方阅读但不清楚:
Eclipse Java debugger transmits new class files over the debugging channel to another JVM
Eclipse Hot Code Replace 中的这一行不清楚。
最佳答案
我相信 eclipse 使用相同的逻辑,它们都依赖于称为 JVMTI 的 native 接口(interface)。 JVMTI 提供工具来检查状态,并控制在 Java 虚拟机中运行的应用程序的执行。
Java Instrumentation Implementation中有JVMTI的代理。与 vm 对话并执行某些任务的代理。它也有 redefineClasses 方法。
Eclipse Java调试器或其他工具使用JPDA(Java Platform Debugger Architecture),JPDA主要有三部分(JVMTI、JDWP、JDI)。 JVMTI作为被调试器,JDI作为调试器,JDWP作为它们之间的通信 channel 。
最后,他们都与 JVMTI 对话,并且它使用相同的逻辑。
关于java - eclipse 是否使用 Java Instrumentation API 进行热代码替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14414215/