玩转字节码,手写字节码解析器
1、本套课程目标
2、每节课的节奏
3、高清视频
4、javap、jclasslib
5、自研能够在JVM上运行的语言
6、JNI、黑科技:热更新热部署、无侵入日志系统
7、实现细节
字节码文件
字节码文件
class content
Class对象
对象
字节码文件规范
类加载器的存储空间的
1、2
long、double
8B拆成2个4B
虚拟机栈 64bit
操作数栈 4B
局部变量表 4B
编译系统 javac
字节码文件
类加载器子系统
字节码文件解析器 parseClassFile
Input:字节码文件 IO
Output:klass、mirrorKlass(Class对象)
一个字节一个字节的解析
魔数
父类
常量池
1、如何设计的问题
Java部分
c++部分
2、有三部分内容的如何存储
2个short合并成一个int
class index << 16 | nameAndType index
24\25
0x0016 << 16 | 0x0017
0x160017
如何使用呢
0x16 >> 16
0x1617 & 0x00ff = 0x0017
字段信息
方法信息
Hotspot源码
类加载阶段
解析阶段
验证阶段
内存编织
指针压缩
int
long
double
float
是如何存储的
byte数组<=>long\double
运行系统 java
oop
klass