类加载器
类加载器:负责.class文件(存储的物理文件)加载到内存中,成为一个对象(Class对象)。
类加载时机
- 创建类的实例(对象)
- 调用类的类方法
- 访问类或者接口的类变量,或者为该类变量赋值
- 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象
- 初始化某个类的子类
- 直接使用java.exe命令来运行某个主类
总结:用到就加载,不用不加载
上述六种情况都会使用到类,所以要把class文件加载进内存
类加载器分类
类加载机制
- 缓存机制:所有加载过的C1ass对象都会被缓存。当程序中需要使用某个Class对象时,类加载器先从缓存区中查找该Class对象,找到直接返回而非重新加载(这就是为什么修改了代码后,必须重新启动JVM程序所做的修改才会生效的原因);找不到才会读取该类对应的class文件二进制数据,并将其转换成Class对象,并存入缓存区中。
- 双亲委派:当加载一个类的时候,先让parent(父)类加载器试图查找缓存并加载该class,只有在父类加载器查找失败并无法加载该类时,才尝试从自己的负责的位置中加载该类。
点个赞
test