1.类加载器

Java虚拟机中可以安装多个类加载器,系统默认主要三个类加载器,每个类负责加载特定位置的类:BootStrap(内嵌在java虚拟机中由C++编写),ExtClassLoader,AppClassLoader。当然也可以自定义类加载器,自定义的加载器必须继承ClassLoader。

Java虚拟机中的所有类加载器采用具有父子关系的树形结构进行组织,在实例化每个类加载器对象时,需要为其指定一个父级类加载器对象或者默认采用系统类加载器为其父级类加载。

2.下面我们来看如下一段代码:

public class ClassLoaderTest {
public static void main(String[] args) {
ClassLoader loader = ClassLoaderTest.class.getClassLoader();
while (loader != null) {
System.out.println(loader.getClass().getName());
loader = loader.getParent();
}
System.out.println(loader);
}
}

// 先后输出为:

// sun.misc.Launcher$AppClassLoader

// sun.misc.Launcher$ExtClassLoader

// null : 注null就代表是BootStrap类加载器,该加载器是顶级加载器,没有父类加载器

3.类加载器之间的父子关系和管辖范围:

BootStrap -> ExtClassLoader -> AppClassLoader(即通常所说的System ClassLoader)

它们的管辖范围依次是:
  BootStrap------>JRE/lib/rt.jar
  ExtClassLoader---------->JRE/lib/ext/*.jar
  AppClassLoader---------->CLASSPATH指定的所有jar或目录。

4.父类委托机制

父类委托机制除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。这里类加载器之间的父子关系一般不会以继承的关系来实现,而是都使用组合关系来复用父加载器的代码。

父类委托机制工作过程是:如果一个类加载器收到了类加载的请求,他首先不会自己去尝试加载这个类,而是把这个请求委托给父类加载器去完成,每一个层级的类加载都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求时,子加载器才会尝试自己去加载。

下面是类加载器层级展示:

转载于:https://blog.51cto.com/earthlyfish/1727620

java类加载器和父类委托机制相关推荐

  1. Java虚拟机JVM学习05 类加载器的父委托机制

    Java虚拟机JVM学习05 类加载器的父委托机制 类加载器 类加载器用来把类加载到Java虚拟机中. 类加载器的类型 有两种类型的类加载器: 1.JVM自带的加载器: 根类加载器(Bootstrap ...

  2. axure 富文本编辑器_Java的类加载器与双亲委托机制

    目录: 类加载器 java.lang.ClassLoader类 URLClassLoader与SecureClassLoader ClassLoader常见方法源码分析 双亲委托机制 图解 源码角度分 ...

  3. java 父委托机制优点_类加载器及父亲委托机制

    一.类加载器 1.在Java中,有两种类型的类加载器,分别是JVM自带的类加载器和用户自定义的类加载器. 2.JVM自带的类加载器有三种,如下: 根(Bootstrap)类加载器:该加载器没有父加载器 ...

  4. Java类加载器及自定义类加载器

    一.类加载器父亲委托机制 Java类加载器采用父亲委托机制,先尝试用父加载器加载,父加载器无法加载,则此加载器加载, 注意,此父加载器与子加载器并非继承关系,而是指定的关系. 从ClassLoader ...

  5. 类加载器 java委托机制_解析Java虚拟机中类的初始化及加载器的父委托机制

    类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值. 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始化: 2.在静态代码块中进行初始化. 没有 ...

  6. 下面有关java类加载器牛客网_下面有关java classloader说法错误的是?

    0 有的书上介绍的JVM中3个默认ClassLoader是:BootStrap ClassLoader,Extension ClassLoader,System ClassLoader.当然有时我们也 ...

  7. java 类加载器-基础

    java 类加载器-基础 类加载机制 类加载器的双亲委托机制 自定义类加载路径 自定义类加载器 类加载机制 类加载器ClassLoader. – 负责查找,加载,校验字节码的应用程序. – java. ...

  8. java类加载器、双亲委派、沙箱安全机制全都让你整明白(三万字,收藏慢慢啃)

    目录 一.概述 1.类加载的分类 2.类加载器的必要性 3.命名空间 4.类加载机制的基本特征 二.类加载器的分类 1.引导类加载器 2.扩展类加载器 3.系统类加载器 4.用户自定义类加载器 三.测 ...

  9. java 父委托机制优点_Java虚拟机父类委托机制设计的优点

    Java虚拟机父类委托机制设计的优点 昨天朋友的聊天中,讨论起了Java虚拟机的机制,父类委托机制,根加载器.扩展类加载器.应用类加载器.....说了很多,但是朋友(辉哥)的一句话,为什么这样设计呢? ...

  10. JAVA类加载器包括几种?它们之间的关系是怎么样的?双亲委派机制是什么意思?有什么好处?

    JAVA类加载器包括几种? 引导类加载器 bootstrap class loader 启动类加载器主要加载的是JVM自身需要的类,这个类加载使用C++语言实现的,是虚拟机自身的一部分,它负责将 /l ...

最新文章

  1. 教你用Python表达母亲节的祝福
  2. web 移动端 ios 浏览器中 animation 动画异常
  3. c语言搜索关键字吗,c语言-以关键字搜索程序
  4. 在 Asp.Net Core 中使用 worker services
  5. 配置所需要的依赖_配置spring所需要的jar包
  6. java实现winpcap_基于winpcap的ARP发送程序
  7. 【CSWS2014 Main Conference】Some Posters
  8. byte[] 转Hex String
  9. Failed to start Zabbix Agent.
  10. Oracle10g 如何给scott用户解锁
  11. [JAVA毕业设计]高速公路收费管理源码获取和系统演示
  12. 短信验证码平台必须具备特点有哪些?
  13. Apple现行公开的framework简介
  14. U盘安装MacBook系统
  15. mysql udp提权_SQL Server数据库1433端口解封提权
  16. Java后端服务器点餐系统的部署+前端微信小程序开发(13)
  17. 提供羟基、羧基、醚基、酯基、氨基、磺酸基、烯基、苄基、腈基、胍类等功能性离子液体定制合成服务
  18. 如何在ArcGIS中应用七参数对影像进行坐标投影变换
  19. exe反编译NET逆向
  20. 顺序功能图用计算机绘制,江苏大学2016年自动化PLC课程设计任务

热门文章

  1. (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
  2. 推荐一款弹出窗口插件 lhgdialog 4.2.0 正式版
  3. 用FreeBSD与memcached建立分布式缓存服务器全程记录之memcached使用与安装
  4. [读书]看看你有没有忽视
  5. 你所需要的只是注意力
  6. RabbitMQ中Confirm确认与Return返回消息详解(八)
  7. 上海航信电子发票对接
  8. Spring No mapping found for HTTP request with URI错误
  9. 系统调用服务号 linux 2.6.32
  10. cocos2d-x关于CCTableView的“乱序问题”的理解