Java Instrumentation中Transformer的主要用途是什么。我知道它们将与仪器实例一起添加。同样在premain方法中,public static void premain(String agentArgs, Instrumentation inst);
agentArgs
分配了哪些参数
最佳答案
转换器 (java.lang.instrument.ClassFileTransformer) 用于在将类文件加载到 Java 虚拟机之前在字节码级别上对其进行转换。该功能可用于修改字节级别的方法(实际上,您会得到一个字节数组),或者使用 Javassist 或 ASM 等第三方库,其中 Javassist 位于更高的修改层上(您可以提供编译后的源代码)运行期间)。 ASM 使用字节码关键字(例如 invokevirtual
)。
在流行的框架(如 AspectJ)中使用在加载时修改类及其条目来提供加载方面的能力(即所谓的“加载时编织”)。
agentArgs
premain(...)
中的参数方法是String
包含启动时提供给代理的参数。是单String
应由代理本身解析。
您可以像这样为代理提供一个:
$ java -javaagent:${jarfile}=${agentArgs}
您输入的值 ${agentArgs}
将是 agentArgs
的值参数。
为什么叫args
如果它只包含一个参数?只有天知道。
关于java - Java 仪器中的 Transformer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36460854/