Java 仪器中的变压器

Transformer in Java instrumentation

Transformer 在 java 检测中的主要用途是什么。我知道它们将与检测实例一起添加。还有premain方法中,agentArgsin public static void premain(String agentArgs, Instrumentation inst);

赋值什么参数

变形金刚 (java.lang.instrument.ClassFileTransformer) 用于在将 class 文件加载到 Java 虚拟机之前在字节码级别上转换它们。该功能可用于修改字节级别的方法(实际上,您得到一个字节数组)或使用第三方库,如 Javassist 或 ASM,其中 Javassist 进行了更高的修改层(您可以提供在运行时编译的源代码)。 ASM 使用字节码关键字(即 invokevirtual)。

在加载期间修改 classes 及其条目用于流行的框架,如 AspectJ 以提供加载方面的能力(即所谓的 "loadtime-weaving")。


premain(...) 方法中的 agentArgs 参数是一个 String,其中包含在启动时提供给代理的参数。它是一个单一的 String,应由代理本身解析。

您可以像这样为代理提供一个:

$ java -javaagent:${jarfile}=${agentArgs}

您作为 ${agentArgs} 输入的值将是 agentArgs 参数的值。

如果它只有一个参数,为什么叫 args?只有天知道。