专栏名称: 架构师
架构师云集,三高架构(高可用、高性能、高稳定)、大数据、机器学习、Java架构、系统架构、大规模分布式架构、人工智能等的架构讨论交流,以及结合互联网技术的架构调整,大规模架构实战分享。欢迎有想法、乐于分享的架构师交流学习。
今天看啥  ›  专栏  ›  架构师

Java agent原理浅析与编码实战

架构师  · 公众号  · 科技自媒体  · 2024-12-02 22:28
    

主要观点总结

本文介绍了Java Agent的实现原理和使用方法,包括premain agent和attach agent两种类型。文章详细阐述了如何使用javassist库修改字节码文件,并给出了premain agent和attach agent的示例代码。此外,还介绍了如何使用maven-assembly-plugin插件打包agent,并指出了一些注意事项。

关键观点总结

关键观点1: Java Agent的概念和作用


关键观点2: premain agent的原理和使用方法


关键观点3: attach agent的原理和使用方法


关键观点4: 使用maven-assembly-plugin插件打包agent




文章预览

架构师(JiaGouX) 我们都是架构师! 架构未来,你来不来? 在工作中有使用 sandbox 修改类中的方法体、返回等,现通过 demo 编码学习,了解其底层实现的原理。 agent 在 Java 生态中使用广泛,例如 arthas https://arthas.aliyun.com/doc/ 、trace 记录等框架等,都是通过 agent 实现。 Java 中的 agent 分为两类: premain agent: 在 Jvm 启动前,将 agent 随 jvm 一起启动生效。 attach agent :在 Jvm 启动后,通过将 agent attach 到指定 pid 的 jvm 上生效。 不论是修改代码逻辑、修改函数返回,本质上来说都修改是加载类的字节码文件,而这两种 agent 分类均是通过 jvm 提供的扩展点在类加载前增加逻辑来修改字节码,达到修改实际生效的字节码文件的效果。 区别在于: premain agent 由于是在 jvm 启动之前生效的,所以可以在类的初次加载前完成扩展逻辑,在类的初次加载时对类的字节 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览