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

类加载的作用是什么?
把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。
Java类加载的特点?
类型的加载、连接和初始化都在程序运行期完成。
- 优势:极高的扩展性和灵活性,Java动态扩展语言特性的基础
- 劣势:类加载时增加性能开销;提前编译面临困难
class文件的来源?
本质上是二进制字节流,可以来源于磁盘文件、网络、数据库、内存或动态产生。多种来源提高灵活性。
类加载的完整过程?
加载——>验证——>准备——>解析——>初始化——>使用——>卸载
其中,加载、验证、准备、初始化、卸载五个阶段“开始”的顺序是确定的,实际执行是交叉混合的,并不是前一个阶段完成了之后才会进行下一阶段,而是会在一个阶段执行的过程中激活下一阶段
解析阶段在某些情况下可以在初始化之后再开始——为了支持运行时绑定特性(?)
开始加载阶段的时机没有强制约束,可由虚拟机具体实现来把握
《Java虚拟机规范》规定了6种必须立刻初始化的情况,有且只有这6种情况