Java agent技术原理文档
Java代理 (agent) 是在你的main方法前的一个拦截器 (interceptor),也就是在main方法执行之前,先执行agent代码。
主要利用就是Java SE 5 开始有的新特性,即利用 java.lang.instrument 做动态 Instrumentation 使开发者可以构建独立于应用程序的java agent(代理)程序,用来监测运行在JVM上的程序,甚至可以动态的修改和替换类的定义,你不必去修改应用程序的配置,也不必重新打包部署验证。
而在agent里的代码就是利用ASM等字节码修改工具在需要监控的代码上注入监控代码,捕获代码执行的时间,参数等,然后把这些数据发送到远程数据中心。