- 类加载的作用
将Class文件(也就是字节码文件)加载到内存中,并将这些静态数据转换成为方法区的运行时数据结构,然后在堆中生成一个代表这个类的java.lang.Class对象,这个Class类的实例就作为方法区中数据结构的访问入口
类缓存:标准的javaSE类加载器可以按要求查找类, 但一旦某个类被加载到类加载器中,它将维持加载一段时间(也就是缓存一定的时间)
JVM垃圾回收机制可以回收这些加载到内存中的运行时类,但是在这个一定时间内是一般不会回收的
类加载器共有以下三种: 第一种: —> 引导类加载器 (根类加载器) (Bootstap ClassLoader)
是用C++编写的,是JVM自带的类加载器,负责java平台核心库中的类的加载,用来装载核心类库
引导类加载器无法直接获取,所以也就无法对核心类库之外的类进行加载 第二种: —> 扩展类加载器(Extension ClassLoader)
负责jre/lib/ext目录之下的jar包或者-D: java.ext.dirs指定目录下的jar包中的类的加载(也就是包装入工作库)
扩展类加载器可以获取到jar包就类似于我们的exe文件,jar包中就是以jar结尾的文件,就和我们的exe文件一样,我们可以理解为是安装包,但是jar包中都是我们的java中的类也就是字节码文件压缩的 第三种: —> 系统类加载器(System ClassLoader)
负责java - classPath或者 - D java.class.path所指的目录之下的类与jar包中的数据的加载
系统类加载器是最常用的类加载器,我们的自定义类就是使用系统类加载器来加载的系统类加载器可以获取到 补充: 处理上面的三种类加载器,我们还可以自定义类加载器,但也只能继承于现有的体系


![类加载器(ClassLoader) [Java] 类加载器(ClassLoader) [Java]](http://www.mshxw.com/aiimages/31/716870.png)
