类加载机制与反射
1、类的加载、连接和初始化 加载类的时机 第一次使用该类 采用预加载机制加载类 Java虚拟机进程(JVM进程) 同一个JVM里的所有线程、所有变量都处于同一个进程里,都使用该JVM进程的内存区 JVM进程终止时机 程序运行到最后正常结束。 程序运行到使用System.exit()或Runtime.getRuntime().exit()代码处结束程序。 程序执行过程中遇到未捕捉的异常或错误而结束。 程序所在平台强行结束了JVM进程。 两个JVM进程间并不会共享数据 类的加载 加载、连接、初始化(当程序使用某个类时,如果该类还未加载进内存中,执行这三个步骤来对类进行初始化。)(这三个步骤通常连续完成,故统称为类加载、类初始化) 类加载:将类的class文件读入内存,并为之创建一个java.lang.Class对象。 类的加载由类加载器完成,类加载器通常由JVM提供,这些类加载器也是java程序运行的基础,JVM提供的这些类加载器通常被称为系统类加载器。 开发者可以通过继承ClassLoader基类来创建自己的类加载器。 通过使用不同的类加载器,可以从不同来源加载类的二进制数据 从本地文件系统加载class文件 从JAR包加载class文件 通过网络加载class文件 把一个java源文件动态编译,并执行加载 类加载器通常无需等到“首次使用”该类时才加载该类