jvm有三种类加载器,一种用户自定义加载器,从上到下分别是:
bootstrap classLoader 该类加载器在java虚拟机启动时将jdk核心类库加载进内存
extension classLoader 扩展类加载器,该类加载器是加载jre的一些jar的类库
system classLoader 系统类加载器,该类加载器是加载classpath下面的指定类库到内存
custom classLoader 用户自定义类加载器,该类加载器由程序员自己负责在程序运行期间,通过java.lang.classLoader的子类来动态加载class文件
加载机制:
java类加载机制叫双亲委托机制:就是当有请求向加载器请求类时,首先会自底向上查询该类是否被加载到内存,如果被加载则直接返回该类,如果没有,那么先委托父类加载器加载该类,如果当前加载器还有父类,那再向上一级委托,直到顶层,只有当父类无法加载该类时,才会返回下一级直到自己加载,如果自己也无法加载,则返回类找不到异常(ClassNotFoundException)。例如:当要求用用户自定义加载器加载java.lang.String类时,实际上用的是bootstrap classLoader加载的,因为java.lang.String是jdk的核心库类,在用户自定义加载时,会先委托父类加载器。
Atas ialah kandungan terperinci 详解JAVA开发之classLoader类加载机制. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!