我有两个问题
redefineClasses 可以与支持 JIT 的 JVM 一起使用吗?
如果是这样,在多线程应用程序中,如果一个线程使用 redefineClasses 重新定义一个类,另一个线程是否会看到该重新定义的类? (特别是,如果另一个线程正在运行 jit 编译的代码?)
最佳答案
关于问题 2 - 是的,其他线程将看到重新定义的类。有一个限制 - 如果您在一个线程中修改某个方法,而另一个线程正在执行该方法,则该线程将继续执行旧的字节码。如果另一个线程从该方法返回,则再次调用该方法;它将执行新的字节码。当某个方法处于 Activity 状态时,JVM 不会切换该方法的字节码。
关于java - 在 JVMTI 中重新定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1292144/