1、java虚拟机使用每一个类的第一件事就是将该类的字节码装载进来,转载字节码的功能是由类装载器完成的,类装载器负责根据一个类的名称为定位和生成类的字节码数据后返回给java虚拟机
最常见的装载器,是将.class中的内容,转换成java虚拟器的编码
2、类装载器本身也是一个java类,java虚拟机也允许开发人员编写自己的类装载器,以便通过其他各种特殊方式来产生类字节码
3、不管类装载器采用什么方式,只要能够在内存中制造出给java虚拟机调用的类字节码即可,所以,把类装载器描述为类字节码的制造器更容易让人理解
4、当一个类被加载后,java虚拟机将其编译为可执行代码存储在内存中,并将索引信息存储进一个HashTable中,其索引关键字为与之相对应的类名
5、java程序中的类本身也是一种事物,它也可以用一个java类描述,这个特殊的类名就叫class。类装载器装载某个类的字节码的过程,实际上就是在创建class类的一个实力对象,这class类的实例对象封装的内容正好是当前加载类的字节码数据
类名.class System.class
对象的.getClass() New Date().getClass()
Class.foName("类名")
java虚拟机中内嵌了一个称为Bootstrap的类装载器,它属于java虚拟机的内核,不用类装载器装载。bootStrap类装载器负责加载java核心包中的类(即rt.jar文件中的类),是所有类加载器的顶点,这些类的class.getClassLoader方法返回值为null,即表示是BootStrap累装载器
ExtClassLoader类加载器:jar
AppClassLoader类加载器:启动类
线程中的类加载器:Thread.setContextClassLoader()方法设置线程的上下文类装载器