类加载机制
Java 虚拟机通过Loading(加载)、Linking( 连接)和Initialization(初始化)过程使运行的程序可以使用类型。
Loading加载是将类型的二进制形式带入 Java 虚拟机的过程。
Linking连接是将二进制类型数据合并到虚拟机运行时状态的过程(Linking包含verification, preparation, and resolution)。
Initialization在初始化期间,类变量被赋予其适当的初始值。
Loading加载、Linking链接和Initialization初始化的过程必须按此顺序进行,唯一的例外是链接的第三阶段解析,它可以选择性地在初始化之后进行。
“在首次主动使用时初始化”规则驱动着加载、链接和初始化类的机制。在第一次主动使用时,必须初始化一个类型。然而,在它可以被初始化之前,它必须被链接。在链接之前,它必须被加载。根据他们的选择,实现可以提前加载和链接类型。他们不需要等到类型第一次主动使用来加载和链接类型。但是,如果一个类型在其第一次活动使用之前没有被加载和链接,那么它必须在那个时候被加载和链接,以便它可以被初始化。