1 JDK8 官网
https://docs.oracle.com/javase/8/
2 源码到类文件
2.1 编译过程
Xxx.java -> 词法分析器 -> tokens流 -> 语法分析器 -> 语法树/抽象语法树 -> 语义分析器-> 注解抽象语法树 -> 字节码生成器 -> Xxx.class文件
2.2 类文件(.class文件)分析参考
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html
3 类加载机制
3.1 装载(Load)
作用:查找和导入class文件
过程:
(1)通过一个类的全限定名获取定义此类的二进制字节流
(2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
(3)在Java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问
3.2 链接(Link) -- 包括验证(Verify)、准备(Prepare)、解析(Resolve)
3.2.1 验证(Verify)
作用:保证被加载类的正确性
- 文件格式验证
- 元数据验证
- 字节码验证
- 符号引用验证
3.2.2 准备(Prepare)
作用:为类的静态变量分配内存,并将其初始化为默认值
3.2.3 解析(Resolve)
作用:把类中的符号引用转换为直接引用
3.3 初始化(Initialize)
作用:对类的静态变量,静态代码块执行初始化操作
3.4 类加载机制图解

&spm=1001.2101.3001.5002&articleId=112056626&d=1&t=3&u=784cd219ae4648eab57a7e110a2d39b2)
774

被折叠的 条评论
为什么被折叠?



