类加载器和双亲委派

发布时间:2024年01月17日

在这里插入图片描述

类加载器只能加载在自己的指定目录下的二进制类流。

每个类加载器都有自己的命名空间,但加载到同一片内存区域。

双亲委派机制

需求:一个限定名的类,只会被一个类加载器加载,是唯一的。越重要的越由父亲加载器加载。

UserClassLoader加载一个类,先会委派给bootstrap加载,如果检测到类已加载过,就结束,如果二进制类流不在<JAVA_HOME>/lib目录下,就委派给extensionclassLoader,查看<JAVA_HOME>/lib/ext是否存在这个类的流,如果不存在再使用ApplicationClassLoader,如果还不在classpath,则使用UserClassLoader加载。
在这里插入图片描述
一个限定名的类只会被一个类加载器加载,它是唯一的。

除了BootstrapClassLoader,其他类加载器都是使用ClassLoader的defineClass()方法,加载类的方式是相同的。

破坏双亲委派模型的实例

  1. jdbc数据库对jdk的接口的实现
    jdk类的jdbc接口是由bootstrap加载的,而其jdbc接口实现是由application加载的,是bootstrap对application的委派加载。
  2. 热部署:自由的类加载
文章来源:https://blog.csdn.net/qq_35693377/article/details/135650343
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。