一、类加载器
Java中默认有4种类加载器。
1.启动类加载器
启动类加载器(Bootstrap ClassLoader)用来加载Java核心类库,无法被Java程序直接引用。
2.扩展类加载器
扩展类加载器(extensions ClassLoader)用来加载Java扩展库,Java虚拟机的实现会提供一个扩展库目录。这个类加载器会在该目录里面查找并加载Java类。
3.系统类加载器
系统类加载器(System ClassLoader)也常被称为应用程序类加载器(Application ClassLoader),根据Java应用的类路径(CLASSPATH)来加载Java类。这是应用程序默认的类加载器,可以通过Class Loader.getSystemClassLoader()来获取。
4.用户自定义类加载器
用户自定义类加载器(user ClassLoader),用户通过继承 java.lang.ClassLoader类的方式自定义实现的类加载器。
二、类加载过程
JVM进行类加载要做三件事:
1.通过一个类的全限定名来获取定义此类的二进制字节流。
2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。
3.在内存中生成代表这个类的 .class对象,作为方法区这个类的各种数据访问入口。
三、类的生命周期
一个类从被加载到虚拟机内存中开始,到从内存中卸载,整个生命周期需要经过七个阶段:
加载,验证,准备,解析,初始化,使用,卸载。其中验证,准备,解析这三个部分统称为连接。