我有两个问题


redefineClasses是否可以与启用了JIT的JVM一起使用?
如果是这样,在多线程应用程序中,如果一个线程使用redefineClasses重新定义一个类,那么另一个线程是否看到该重新定义的类? (特别是如果另一个线程正在运行jit编译代码?)

最佳答案

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

07-24 09:15