java agent
java agent相关介绍以及源码分析
sun_tantan
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java Agent(五)OpenJdk/Instrument包源码分析
简介在介绍instrument是什么之前,先来看几个定义:JVMTI(JVM tool interface):它是JVM提供的一系列native编程接口。Agent:与JVM进行通信的外部进程,它们通过调用JVMTI进行交互,可进行的操作包括设置JVM回调函数、获取当前虚拟机状态信息等Instrument:Jdk提供的"java.lang.instrument"包,与JVM进行交互,可以看...原创 2020-04-27 11:29:01 · 1118 阅读 · 0 评论 -
Java Agent(四)OpenJdk/JDK Attach部分源码分析
总的来说,JDK端的代码,目的就是:给JVM发送SIGBREAK信号,触发Attach Listener线程的创建;给JVM发送load命令,让JVM执行加载目标agent的操作;接收JVM返回的执行结果,判断是否加载agent成功;流程图:我们在外部程序里只需要两行编码:VirtualMachine virtualMachine = VirtualMachine.attach(...原创 2020-04-17 11:40:11 · 1047 阅读 · 0 评论 -
Java Agent(三)OpenJdk/HotSpot Attach部分源码分析
HotSpot端源码我们的目的是实现外部进程发送一个attach的信号,JVM收到后加载指定的agent,本质就在于外部进程与JVM的通信。所以首先来分析JVM端的源码,看看它给我们提供了一些什么样的接口。源码在OpenJdk下的HotSpot包,有关源码目录介绍可参考:OpenJDK 源码的目录结构Signal Dispather的创建要实现进程到JVM的通信,目标JVM会启动一个监...原创 2020-04-14 00:12:12 · 751 阅读 · 0 评论 -
Java Agent(二)Attach机制及运行时加载agent
引入从JDK6以来,我们可以通过agentmain方法进行对JVM中运行的程序进行监控。然鹅不像premain由JVM启动时被调用,这个agentmain方法调用的时机是什么?我们又如何发送一个信号给目标虚拟机?简介agentmain方法调用的时机,自然是我们在一个进程中所触发的,它通过发送信号告诉另外一个进程,也就是目标JVM进程,此时要加载我们指定的agent。这个过程中,涉及进程间通信...原创 2020-04-05 17:58:38 · 3388 阅读 · 3 评论 -
Java Agent(一)Instrumention及启动时加载agent
引入如何对一个方法进行类似于切面的修改呢?首先我们想到的是AOP面向切面编程,及其原理:代理技术。Java中实现AOP的方式,可以大致分为静态AOP和动态AOP。静态AOP:在编译期就把切面逻辑加入到目标类中,在编译期直接改变了字节码,例如程序员的硬编码、AspectJ(非Spring AspectJ)。动态AOP:在运行期间实现的代理模式,方式有生成目标类的代理类、生成目标类的子类...原创 2020-04-02 19:47:10 · 2431 阅读 · 1 评论
分享