文章目录
使用 Insrumentation ,开发者而言构建一个独立于应用程序的代理程序(Agent),检车和协助运行在JVM 上的程序,甚至可以替换和修改某些类的定义。简单的来说 开发者使用Instrumentation 可以实现一种虚拟机级别的AOP实现。
Instrumentation 的最大作用,就是类定义动态改变和操作。 程序运行时,通过 -javaagent 参数指定一个特定的 jar 文件来启动 Instrumentation 的代理程序。 其实这个对很多人来说不陌生 xmind, idea 永久破解的过程中,都有使用 -javaaegent ,然后指定一个 jar 文件。甚至一些监控软件也用了,例如 skywalking。
看看怎么用
java.lang.instrument 包的具体实现。
做个代理类
import java.lang.instrument.Instrumentation;
public class Agent {
/**
* 编写一个 Java 类 包含
* public static void premain(String agentArgs, Instrumentation inst); [1]
* public static void premain(String agentArgs); [2]
* @param options
* @param ins
*/
public static void premain(String options, Instrumentation ins) {
if (options != null) {
System.out.printf(" I've been called with options: \"%s\"\n", option
转载自原文链接, 如需删除请联系管理员。
原文链接:Instrumentation 介绍与使用,转载请注明来源!