1、类的加载
当我们程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化三步来实现对这个类的初始化。
类初始的时机?
- 创建类的实例
- 访问类的静态变量,或为静态变量赋值
- 调用类的静态方法
- 初始化某个类的子类
- 使用反射方式强制创建某个类或接口的字节码对象
2、类加载器
类加载器的作用是将.class文件加载到内存中,并为之创建对应的Class对象,Java中提供了三类加载器。
- BootstrapClassLoader:负责将Java核心类的加载,比如常用的String、List,在JDK中JRE的lib目录下的rt.jar文件中。(根类加载器)
- ExtensionClassLoader:负责JRE的扩展目录中jar包的加载,在JDK中JRE的lib目录下ext目录。(扩展类加载器)
- SystemClassLoader:负责在JVM启动时加载来自Java命令的class文件。(系统类加载器)
有梦为马,随处可栖。