JVM入门(流程分析)

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  类加载机制图解


 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值