-
当类被实例化:当使用
new
关键字创建类的对象时,JVM会加载类的字节码。如果该类的字节码尚未加载,则会先加载它,然后创建对象。 -
当访问静态成员:如果访问类的静态成员(如静态变量或静态方法),JVM会在首次访问时加载类的字节码。
-
当调用静态方法:如果调用类的静态方法,JVM也会加载类的字节码。
-
当使用反射:通过反射机制,可以在运行时动态地加载类。使用
Class.forName()
方法或类加载器的loadClass()
方法,可以加载指定类的字节码。 -
当启动应用程序时:当运行Java程序时,JVM会加载指定的主类的字节码,然后开始执行
main
方法。
重点思想:JVM使用了"延迟加载"的策略,即只有在需要使用类时才会加载其字节码。这种方式有助于节省内存和提高应用程序的性能,因为并不是所有的类都会在程序的起始阶段被加载,只有在需要时才会加载相关的类。