关于解决网站 建设的请示,软件公司运营是做什么的,wordpress怎么安装在nginx下,滕州建设局网站双亲委派机制#xff0c;就必须弄清楚Java的类加载器。
什么是类加载器
Java类加载器(ClassLoader)是Java运行时环境(JRE)的一部分#xff0c;负责动态的将Java类加载到Java虚拟机的内存空间。 类加载器有哪些
主要有三个#xff1a;
引导类加载器(Bootstrap ClassLoade…双亲委派机制就必须弄清楚Java的类加载器。
什么是类加载器
Java类加载器(ClassLoader)是Java运行时环境(JRE)的一部分负责动态的将Java类加载到Java虚拟机的内存空间。 类加载器有哪些
主要有三个
引导类加载器(Bootstrap ClassLoader)加载Java的核心库(jre/lib/rt.jar)同时加载另外两种类加载器由C编写扩展类加载器(Extensions ClassLoader)加载Java的扩展库(jre/ext/*.jar)应用类加载器(Application ClassLoader)它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说Java 应用的类都是由它来完成加载。
除了上面三种外还可以自定义类加载器以方便开发。 类加载器之间的关系
代码示例 结果输出 通过这段代码看出日常编写的代码是通过Application ClassLoader加载其父类是Extensions ClassLoader。
实际上Bootstrap ClassLoader也是Extensions ClassLoader的父类但Bootstrap ClassLoader由C编写在Java中无法获取所以对外显示为null。 双亲委派机制
双亲委派机制指当某个特定的类加载器在收到类加载的请求时会遵循下面的规则顺序
先判断被加载的类是否加载过如果是则结束否则会将加载任务委托给自己的父亲父类加载器在收到类加载的请求时也先判断被加载的类是否加载过如果是则结束否则同样将加载任务委托给自己的父亲不断的循环进行步骤2直到将加载任务委托给Bootstrap ClassLoader为止。此时Bootstrap ClassLoader 会先判断被加载的类是否加载过如果是则结束
请注意到这里为止都只是在转移加载任务的请求下面将会进行类加载。
Bootstrap ClassLoader会判断能否完成加载任务如果能则直接加载否则会将加载任务交给子类加载器子类加载器也会判断能否完成加载任务如果能则直接加载否则会再一次将加载任务交给子类加载器不断的循环进行步骤2直到最后一个类加载器如果这个类加载器仍然不能够加载这个类就会抛出一个异常ClassNotFoundException。 双亲委派机制的好处
首先保证 java核心库 的安全性。如果你也写了一个java.lang.String类那么JVM只会按照上面的顺序加载jdk自带的String类而不是你写的String类。其次保证同一个类不会被加载多次。