View on GitHub
JVMByteCodeGitBook
《Java虚拟机字节码:从入门到实战》第二版《深入浅出JVM字节码》开源电子书。这本书详细介绍ASM框架的API、Class文件结构解析、HotSpot虚拟机类加载源码分析、动态代理与字节码插桩的实现。
目录
《深入浅出JVM字节码》
序言
第一章 Java虚拟机基础
为什么会出现StackOverflowError
JVM运行时内存结构
线程、栈与栈桢
局部变量表与操作数栈
基于栈的指令集架构
本章小结
第二章 深入理解Class文件结构
class文件结构
动手实现class文件结构解析器
解析魔数
解析版本号
解析常量池
解析class文件的访问标志
解析this与super符号引用
解析接口表
解析字段表
解析方法表
解析class文件的属性表
解析整个Class文件结构
属性二次解析
本章小结
第三章 字节码指令集
从Hello Word出发
字段与方法描述符
读写局部变量表与操作数栈
基于对象的操作
访问静态字段与静态方法
调用方法的四条指令
不同类型返回值对应的指令
创建数组与访问数组元素
条件分支语句的实现
循环语句的实现
异常处理的实现
本章小结
第四章 深入理解类加载
动态加载类的两种方式
类加载过程
双亲委派模型
自定义类加载器
本章小结
第五章 ASM快速上手
框架简介
访问者模式在ASM框架中的应用
在项目中使用ASM
创建类并创建方法
给类添加字段
改写类并改写方法
创建类并实现接口
继承类并重写父类方法
本章小结
第六章 实战一:JDK与Cglib动态代理
JDK动态代理实现原理分析
动手实现JDK动态代理
Cglib动态代理实现原理分析
动手实现Cglib动态代理
本章小结
第七章 实战二:APM数据采集之探针埋点
Instrumentation简介
编写Java Agent插件
在类加载之前修改类的字节码
使用ASM为方法插入埋点
在类加载之后修改类的字节码
本章小结
第八章 进阶篇
深入理解类型检查与栈映射桢
深入理解泛型与泛型方法调用
字节码实战开源项目
实现类Spring框架@Async注解功能的asyncframework
一款轻量级的分布式调用链路追踪Java探针vine
运行时解析json生成class的json-class-generator
JavaAgent入门级项目Beemite