Java-jvm类加载机制

59 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情

Java-jvm类加载机制

jvm类加载机制分为加载、验证、准备、解析、初始化五个部分。

加载阶段

在加载过程中,会在内存中生成一个class类对象,作为各种数据的入口。

验证阶段

对加载过程中生成的class对象内容进行验证。

准备阶段

为对象类变量分配内存空间以及设置类变量初始值。

解析阶段

将常量池中的符号引用替换为直接引用的过程。

符号引用

符号引用的字面量形式定义在Java虚拟机规范的class文件格式中。

直接引用

指向目标的指针,相对偏移量或能间接标志目标的句柄。

初始化阶段

在初始化阶段,才是真正执行Java代码。

注意

  1. 通过子类引用父类的静态字段,只会触发父类的初始化。
  2. 定义对象数组,不会触发该类的初始化。
  3. 常量在编译期间会存入调用类的常量池中,没有直接引用定义常量的类,不会触发定义常量所在的类。
  4. 通过类名获取class对象,不会触发类的初始化。
  5. 通过class·forname加载指定类,如果initialize为false时,不会触发类的初始化。
  6. 通过classloader默认的loadclass方法,不会触发类的初始化。

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情