java - 在 JVMTI 中重新定义类

标签 java

我有两个问题

  1. redefineClasses 可以与支持 JIT 的 JVM 一起使用吗?

  2. 如果是这样,在多线程应用程序中,如果一个线程使用 redefineClasses 重新定义一个类,另一个线程是否会看到该重新定义的类? (特别是,如果另一个线程正在运行 jit 编译的代码?)

最佳答案

关于问题 2 - 是的,其他线程将看到重新定义的类。有一个限制 - 如果您在一个线程中修改某个方法,而另一个线程正在执行该方法,则该线程将继续执行旧的字节码。如果另一个线程从该方法返回,则再次调用该方法;它将执行新的字节码。当某个方法处于 Activity 状态时,JVM 不会切换该方法的字节码。

关于java - 在 JVMTI 中重新定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1292144/

相关文章:

java - JavaDoc中的 `.`和 `#`有什么区别?

java - 属性 'xsi:noNamespaceSchemaLocation' 不允许出现在元素 'VAST' 中

java - 我怎样才能捕捉到 NoSuchMethodException?

java - android 中的 Calendar 类有什么问题吗?

java - 正则表达式面试

java - 如何进行条件级联验证(Hibernate)?

java - 如何在普通 Java 控制台应用程序中获取 token ?

java - 将 Struts 从 2.3.7 升级到 2.3.33 后,JSONWriter.setDateFormatter 的 NoSuchMethodError

java - 文件的输入/输出

java - 在线程 "main"java.lang.UnsatisfiedLinkError : no jnilept in java. library.path