【问题标题】:Does eclipse use Java Instrumentation API for Hot Code replaceeclipse 是否使用 Java Instrumentation API 进行热代码替换
【发布时间】:2013-01-03 01:35:04
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你的链接坏了,试试这个 - wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F
  • @Perception 我改变了它,它工作正常
  • Eclipse 是开源的——你为什么不看看?您可以在此处抢先了解如何查看它:vogella.com/articles/EclipseCodeAccess/article.html。另外:如果您的解决方案“有效”,那么您关心 Eclipse 是如何做到的?
  • @paulsm4 如果某些东西有效,并不意味着它是最好的方法。这就是我想知道的。
  • @paulsm4 请建议我一些改进问题的方法。

标签: java eclipse


【解决方案1】:

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

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

Eclipse Java调试器或其他工具使用JPDA(Java Platform Debugger Architecture),JPDA主要有三部分(JVMTI,JDWP,JDI)。 JVMTI充当被调试者,JDI充当调试器,JDWP充当它们之间的通信通道。

最后,他们都与 JVMTI 对话,并且使用相同的逻辑。

【讨论】:

  • 一个糟糕问题的优秀答案:)
【解决方案2】:

不,调试器通常使用 JDI。

com.sun.jdi.VirtualMachine#redefineClasses

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    相关资源
    最近更新 更多