当前位置:   article > 正文

Java Agent的初步认识和开发_开发agent

开发agent

认识

Java Agent即Java探针技术, 通过Java Interface的方式对JVMTI(JVM Tool Interface) 底层一些功能的调用进而实现一些自己想要的应用功能, 比如应用程序性能分析, 应用调用监控拦截等功能

JVMTI介绍

JVMTI是JVM向外暴露的一批接口, 提供了诸如获取JVM中线程, 内存, 堆栈, 方法, 定时器等功能, 通过这些接口我们可以完全的把控应用的运行时信息, 运行时的拦截跟踪等; 同时它也是JPDA架构中处于最地下的一层服务接口,在其之上才构建出Java应用的Debug架构体系;

instrument包介绍

jdk的java.lang.instrument包下面定义了JVM中Class的存在形式及修改转化Class定义文件的接口. 这些接口由JVM开发商(sun)实现. 我们就可以使用这些接口进而对Class进行修改;

运行原理

定义Java Agent的jar

一个Java Agent就是一个普通的jar文件, 然后在jar的MANIFEST.MF文件中声明jar的执行入口class路径, 比如

Premain-Class: x.y.z.MainClass
  • 1

Agent jar的入口class

一个普通的Java-class, 然后需要有一个限定名称和入参的静态方法

public static void premain(String agentArgs, Instrumentation instrumentation) throws PluginException, IOException {
// 自定义切入逻辑代码
}
  • 1
  • 2
  • 3

java命令指定Agent参数

java -javaagent:{agent-jar-path} -D{agent.param.key}={agent.param.value} -jar {app-jar-path}
  • 1

启动步骤

JVM启动时, 在加载应用jar之前, 在加在Instrumentation的实现类时, 就会调用到我们自己写的Agent的Main方法中去, 去执行我们自己的逻辑;

实践开发

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/349115
推荐阅读
相关标签
  

闽ICP备14008679号