Java Agent 是可以在JVM启动或运行时,拦截并修改类字节码
Premain模式
JVM初始化后立刻执行
使用 -javaagent参数激活
JVM启动->Agent的premain->主程序的main
Agentmain模式
JVM运行时动态附加
完整流程
1.准备agent.jar->实现agentmain的类->正确的MANIFEST.MF->必要的字节码转换逻辑
2.目标应用启动:java -cp app.jar
3.jps -l 获取目标PID
4.执行动态附加
VirtualMachine vm = VirtualMachine.attach("1234");
vm.loadAgent("/path/to/agent.jar", "param1=value1");
vm.detach();