概要
JVM Tool Interface:JVMTI 本质上是在JVM内部的许多事件进行了埋点。通过这些埋点可以给外部提供当前上下文的一些信息。甚至可以接受外部的命令来改变下一步的动作。
外部程序一般利用C/C++实现一个JVMTIAgent,在Agent里面注册一些JVM事件的回调。当事件发生时JVMTI调用这些回调方法。
Agent可以在回调方法里面实现自己的逻辑。JVMTIAgent是以动态链接库的形式被虚拟机加载的。
主要的功能:
- 重新定义类。
- 跟踪对象分配和垃圾回收过程。
Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class文件之中,中间没有添加任何分隔符。根据Java虚拟机规范的规定,
Class文件结构采用一种 类似于C语言结构体的伪结构来存储数据,这种伪结构只有两种数据类型:无符号数和表。