一. 分类:
a. 默认类加载器:只能从本地加载类文件。
引导类加载器(加载java_home/lib),
扩展类加载器(jdk_home/lib/ext),
系统类加载器(也叫应用类加载器/java_classpath),这就是为什么要配置classpath了
b. 自定义类加载器,可以实现加载远程的java类,比如游览器的jre。
二. 作用:运行时负责寻找和加载类文件.
三. 工作步骤:
1. 当需要某个类时,首先加载器会把类的包名和类名转换成path路径(”.”-->”/”)
2. 利用文件路径找到对应的与平台无关的字节码,即中间代码。
3. JVM将这个类通过字节流写入内存,以后便可以调用执行。
四.流程
1. 首先去jvm中的cache里面找对应的类,如果找到就返回该类。
2. 去父类的类加载器中查找,如果找到就返回,如果没有父类说明它就是引导类加载器。继续从引导类加载器中查找类,找到就返回,没有继续。
3. 去子类类加载器中查找,如果找到则返回,没有则继续下步。
4. 查找自定义类加载器,如果找到则返回,如果没有则抛classnotfound exception.
5. 如果找到该类就把它重新放入cache,然后使用它。