-
Notifications
You must be signed in to change notification settings - Fork 8
Java Agent
codingPao edited this page Jan 18, 2023
·
22 revisions
一、Java Agent
Java从1.5提供了java.lang.instrument包,用于给JVM植入java编程语言编写的Instrumentation,这种通过java.lang.instrument实现工具被称为java agent。java agent可以在JVM加载class时候修改目标字节码,或者修改已经加载的class的信息(已经加载的class不会再次初始化,可以调整方法体,但是不能添加/删除/重命名字段或方法,不能修改方法的签名或者更改继承)。
目前java agent支持两种模式加载,启动时加载,通过在JVM启动时配置-javaagent:jarpath[=options],还有一种通过Attach API动态加载java agent。
目前基于java agent实现应用的工具有很多,例如SkyWalking(APM),Arthas(诊断),ChaosBlade(混沌注入),JaCoCo(代码覆盖率)等等。