玩转字节码,手写字节码解析器


    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