1

延迟加载和急切加载有什么区别。在什么情况下会发生延迟加载和急切加载。

4

1 回答 1

1

JVM 必须能够加载 JVM 类文件。JVM 类加载器加载尚未链接到运行时系统的引用的 JVM 类。类被隐式加载是因为: • 初始类文件——包含公共静态 void main(String args[]) 方法的类文件——必须在启动时加载。• 根据JVM 采用的类策略,这个初始类引用的类可以以惰性或急切方式加载。

急切的类加载器会在启动时加载包含应用程序代码的所有类。惰性类加载器会等到第一次主动使用一个类后才加载和链接它的类文件。

类的第一次主动使用发生在以下情况之一发生时: • 创建该类的实例 • 初始化其子类之一的实例 • 初始化其静态字段之一

某些类(例如 ClassNotFoundException)由 JVM 隐式加载以支持执行。您还可以使用 Java API 中的 java.lang.Class.forName() 方法或通过创建用户类加载器来显式加载类。

基于上述规则,可以在系统上强制延迟类加载。

于 2013-11-11T20:20:52.943 回答