Skip to content

Java Agent

codingPao edited this page Jan 18, 2023 · 22 revisions

一、Java Agent Java1.5提供了java.lang.instrument包,用于给JVM植入java编程语言编写的Instrumentation,这种通过java.lang.instrument实现工具被称为java agentjava agent可以在JVM加载class时候修改目标字节码,或者修改已经加载的class的信息(已经加载的class不会再次初始化,可以调整方法体,但是不能添加/删除/重命名字段或方法,不能修改方法的签名或者更改继承)。

目前`java agent`支持两种模式加载,启动时加载,通过在`JVM`启动时配置`-javaagent:jarpath[=options]`,还有一种通过`Attach API`动态加载`java agent`。

目前基于`java agent`实现应用的工具有很多,例如`SkyWalking(APM)`,`Arthas`(诊断),`ChaosBlade`(混沌注入),`JaCoCo`(代码覆盖率)等等。

Clone this wiki locally