据我了解,Java 6 中引入的 Attach API 允许通过代理对在目标JVM中运行的类进行进程间修改。我的问题是:
- 这种策略是否仅限于目标JVM尚未加载的类的检测?和
- 这些转换的限制是什么?例如,只能修改现有方法的主体?还是可以更改类定义中的所有内容?
据我了解,Java 6 中引入的 Attach API 允许通过代理对在目标JVM中运行的类进行进程间修改。我的问题是:
ClassFileTransformer
. 但是,如果重新转换的方法具有活动堆栈帧,则这些活动帧将继续运行原始方法的字节码。重新转换的方法将用于新的调用。Instrumentation接口的 javadoc包含您询问的大部分信息。