JVMTM Tool Interface:JVM源码分析之javaagent原理完全解读
2023-09-14 09:07:23 时间
JVMTM Tool Interface:JVM源码分析之javaagent原理完全解读
概述
本文重点讲述javaagent的具体实现,因为它面向的是我们Java程序员,而且agent都是用Java编写的,不需要太多的C/C++编程基础,不过这篇文章里也会讲到JVMTIAgent(C实现的),因为javaagent的运行还是依赖于一个特殊的JVMTIAgent。
对于javaagent,或许大家都听过,甚至使用过,常见的用法大致如下:
java -javaagent:myagent.jar=mode=test Test
通过-javaagent来指定我们编写的agent的jar路径(./myagent.jar),以及要传给agent的参数(mode=test),在启动的时候这个agent就可以做一些我们希望的事了。
javaagent的主要功能如下:
- 可以在加载class文件之前做拦截,对字节码做修改
- 可以在运行期对已加载类的字节码做变更,但是这种情况下会有很多的限制,后面会详细说
- 还有其他一些小众的功能
- 获取所有已经加载过的类
- 获取所有已经初始化过的类(执行过clinit方法,是上面的一个子集)
- 获取某个对象的大小
- 将某个jar加入到bootstrap classpath里作为高优先级被bootstrapClassloader加载
- 将某个jar加入到classpath里供AppClassloard去加载
- 设置某些native方法的前缀&
相关文章
- JVM内存与垃圾回收篇第2章类加载子系统
- JVM 优化经验总结
- 深入理解jvm和jvm基本调优参数
- 第一章、JVM和Java体系架构
- 【经验】通过JVM调优,让凯哥个人博客响应速度提升了不少
- JVM 彻底搞懂JVM内存区域及直接内存
- 面试必问:JVM 如何确定死亡对象?
- 京东面试题:讲一下JVM调优策略
- 从JVM虚拟机到多线程,手撸Java开发面试必备技术栈 | 极客时间
- 死磕到底JVM,花了5年时间,对加载机制有了不一样的理解
- JVM垃圾回收算法(最全)详解编程语言
- visualVM远程监控JVM详解编程语言
- Linux监控JVM系统性能优化实战(linux监控jvm)
- 如何在Linux系统上安装JVM?-教你简单易懂的方法(linux安装jvm)
- Linux JVM GC管理追求极致性能(linux jvm gc)
- 如何在Linux下修改JVM参数配置(linux修改jvm参数)
- Oracle JVM 解析完美的规范(oracle jvm规范)
- 在Oracle JVM环境下进行下载的指南(oracle jvm下载)