
java agent
tinysakurac
蹒跚学步的猿
展开
-
byte-buddy增强static方法
1.起因为了排查问题需要增强dubbo的AbstractCodec的checkPayload方法,但是增强后重新运行程序发现增强代码没有生效,使用arthas反编译我要增强的AbstractCode类,没有发现增强痕迹,查找agent日志发现有一些报错。很明显我们的增强失败了,而我们现在使用的增强方式是通过bytebuddy agent的方式,最终借助instrument在类加载前进行增强。结果一番google,最终在bytebuddy源作者对于一个类似问题的回复中找到了答案。2.解决方法使用byte原创 2020-10-26 12:43:48 · 1838 阅读 · 1 评论 -
Arthas redefine原理
转载自studyidea.cn的博客前言arthas可以热部署已经被虚拟机加载的类,这其实是借助Instrumentation的redefineClasses能力实现的,Instrumentation可以借助preMain和agentMain的方式分别在程序启动前和运行中获取jvm的信息,进行类的更改和替换,而arthas很明显,是通过agentMain的方式做到在程序运行时做的redefine。Attach ApiAttach API 位于 tools.jar 包,可以用来连接目标 JVM。Att转载 2020-08-05 11:54:04 · 2187 阅读 · 0 评论 -
ByteBuddy使用入坑
ByteBuddy官方文档ByteBuddy 介绍首先需要了解ByteBuddy是什么,ByteBuddy是一款java字节码增强框架,可以动态的生成java字节码文件,比起我们自己进行字节码文件的生成,它屏蔽了底层细节,提供一套统一易上手的Api,简化了字节码增强的学习难度。为什么需要字节码增强技术?ByteBuddy官方文档已经给出了答案The Java language comes with a comparatively strict type system. Java requires原创 2020-07-09 18:14:09 · 14377 阅读 · 6 评论 -
JAVA SE 6新特性:Instrumentation
转载自IBM社区Instrumentation 简介利用 Java 代码,即 java.lang.instrument 做动态 Instrumentation 是 Java SE 5 的新特性,它把 Java 的 instrument 功能从本地代码中解放出来,使之可以用 Java 代码的方式解决问题。使用 Instrumentation,开发者可以构建一个独立于应用程序的代理程序(Agent),用来监测和协助运行在 JVM 上的程序,甚至能够替换和修改某些类的定义。有了这样的功能,开发者就可以实现更为转载 2020-05-27 13:56:06 · 618 阅读 · 0 评论