JavaAgent是什么时候引入的
JavaAgent是JDK1.5之后引入,也可以叫做Java代理
JavaAgent和我们的业务代码执行的顺序是什么?
JavaAgent是运行在main方法之前的拦截器,它内定的方法叫premain,也就是说先执行premain方法,然后再执行main方法。
怎么运行JavaAgent呢?
在我们的启动参数中增加 -javaagent:agent-2.0.jar 就可以了。
agent通常应用在哪里呢,看下图:
agent开发用到的jar包有哪些
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.2-GA</version>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>1.10.19</version>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-agent</artifactId>
<version>1.10.19</version>
</dependency>
Agent能做什么?
1、可以在加载java文件之前做拦截把字节码做修改
2、可以在运行期将已经加载的类的字节码做变更
3、获取所有已经被加载过的类
4、获取所有已经被初始化过了的类
5、获取某个对象的大小
6、将某个jar加入到bootstrapclasspath里作为高优先级被bootstrapClassloader加载
7、将某个jar加入到classpath里供AppClassloard去加载