JVM类加载机制
概述 拟 机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。与那些在编译时需要进行连接工作的语言不同,在Java中,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是为Java应用程序提供了高度的灵活性。 类加载的时机 其中加载、验证、准备、初始化、卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地 开始 ,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定(也称动态绑定或晚期绑定)。注意这里写的是按部就班地“开始”,而不是“进行”或“完成”,强调这点是因为这些阶段通常是相互交叉地混合式进行的,通常在一个阶段执行的过程中调用、激活另外一个阶段。 主动引用 。除此之外所有引用类的方式都不会触发初始化,称为 被动引用 。下面是几个被动引用的代码示例 public class SuperClass { /** * 被动引用示例一: * 通过子类引用父类的静态字段,不会导致子类的初始化 */ static{ System.out.println("SuperClass init"); } public static int value = 123; } public