简介
Java Agent是JDK 1.5 以后引入的,也叫做Java代理,可以实现动态字节码修改,程序热更新,链路跟踪等功能。
Java Agent也是一个Jar包,只是启动方式和普通Jar包有所不同,对于普通的Jar包,通过指定类的main函数进行启动,但是Java Agent不能单独启动,必须依附在一个Java应用程序才能运行。
启动方式
Java Agent 有2种启动方式
1)premain: 用于应用程序启动前,其 main 方法未调用
public static void premain(String agentArgs, Instrumentation instrumentation)
使用方法
premain使用步骤如下:
- 定义一个MANIFEST.MF 文件,文件中必须包含 Premain-Class;
- 创建一个 Premain-Class 指定的类,该类必须包含 premain 方法;
- 将MANIFEST.MF 和 Agent 类打成 jar 包;
在执行 main 函数之前,JVM 会先运行 -javaagent 所指定Java Agent jar包内Premain-Class这个类的premain方法
通过命令行来启动代理:
-javaagent:jarpath[=options]
2)agentmian:用于应用程序已经启