java - Java 仪器中的 Transformer

标签 java instrumentation

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/

相关文章:

java - 如何在android中的Activity之间传递集合

java - 我们可以在类加载后重新转换类吗?

maven - 如何从 Java (Spring boot) 应用程序向 Prometheus 公开指标

安卓仪器 : How do I go back to a previously launched Activity?

java - 无法在 ubuntu 系统上安装 rJava

java - 参数索引超出范围(0 < 1)进入spring jdbctemplate

java - 在 Tom Cat 上部署 Java 项目

java - UUID 列中的 NULL 值

android - 如何在屏幕上产生虚拟触摸?

javascript - 在node.js中为每个请求实现本地存储