开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情
Java-jvm类加载机制
jvm类加载机制分为加载、验证、准备、解析、初始化五个部分。
加载阶段
在加载过程中,会在内存中生成一个class类对象,作为各种数据的入口。
验证阶段
对加载过程中生成的class对象内容进行验证。
准备阶段
为对象类变量分配内存空间以及设置类变量初始值。
解析阶段
将常量池中的符号引用替换为直接引用的过程。
符号引用
符号引用的字面量形式定义在Java虚拟机规范的class文件格式中。
直接引用
指向目标的指针,相对偏移量或能间接标志目标的句柄。
初始化阶段
在初始化阶段,才是真正执行Java代码。
注意
- 通过子类引用父类的静态字段,只会触发父类的初始化。
- 定义对象数组,不会触发该类的初始化。
- 常量在编译期间会存入调用类的常量池中,没有直接引用定义常量的类,不会触发定义常量所在的类。
- 通过类名获取class对象,不会触发类的初始化。
- 通过class·forname加载指定类,如果initialize为false时,不会触发类的初始化。
- 通过classloader默认的loadclass方法,不会触发类的初始化。
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情