虚拟机类加载机制——《深入理解Java虚拟机》第七章笔记
一锅炖不下

类加载的作用是什么?

把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。

Java类加载的特点?

类型的加载、连接和初始化都在程序运行期完成。

  • 优势:极高的扩展性和灵活性,Java动态扩展语言特性的基础
  • 劣势:类加载时增加性能开销;提前编译面临困难

class文件的来源?

本质上是二进制字节流,可以来源于磁盘文件、网络、数据库、内存或动态产生。多种来源提高灵活性。

类加载的完整过程?

加载——>验证——>准备——>解析——>初始化——>使用——>卸载

  • 其中,加载、验证、准备、初始化、卸载五个阶段“开始”的顺序是确定的,实际执行是交叉混合的,并不是前一个阶段完成了之后才会进行下一阶段,而是会在一个阶段执行的过程中激活下一阶段

  • 解析阶段在某些情况下可以在初始化之后再开始——为了支持运行时绑定特性(?)

  • 开始加载阶段的时机没有强制约束,可由虚拟机具体实现来把握

  • 《Java虚拟机规范》规定了6种必须立刻初始化的情况,有且只有这6种情况