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. 声网sdk android接入,Android 集成声网Agora 音视频实时通话(三)
  2. docker导入镜像报错:invalid diffID for layer xxx: expected “sha256:xxx“, got “sha256:xxx“(文件被更改过)
  3. java 用户线程如何修改界面内容_java 加入一个线程、创建有响应的用户界面 。 示例代码...
  4. Android通知,PendingIntent示例
  5. Mysql 系统学习梳理_【All】
  6. c语言中平分怎么表示,平分水问题
  7. 视频教程-职场办公Excel技巧精粹灵活妙用集锦-Office/WPS
  8. 汉王数据导入java环境,汉王数据管理系统导入数据怎样进行数据更新,只导出一天的考勤数据?...
  9. 头条小程序登录40014 bad params
  10. 阿里20周年升级价值观:新六脉神剑与它的变革时代
  11. 设计模式之装饰器(第一篇)
  12. OpenGL超级宝典(第7版)笔记11 帧缓存运算 计算着色器 清单 3.13
  13. 三位一撇:处理数字12345.67——12,345.67
  14. bmc网络配置_SA5212M5-BMC设置
  15. Could not find apk!终于解决了! 坐在我旁边的领导帮我弄的~~ 大家谢谢他吧~~
  16. DFSGSDGHSDGSEDFG
  17. agc004E Salvage Robots
  18. python银行家算法例题详解_攒人品之作-能考408大题的知识点整理(有两个知识点的补充)...
  19. 认识新华三官网官网下载网络模拟器HCL的安装了解HCL
  20. 知乎上一句话几万赞的神回复

热门文章

  1. SQLPLUS SPOOL命令使用
  2. 063 模块的四种形式
  3. 分布式作业 Elastic Job 如何动态调整?
  4. 正则表达式(以后认真研究下)
  5. CNBlog客户端--第一阶段记录
  6. Java私人学习笔记——第2章 数据类型和运算符
  7. [转]myeclipse 8.5最新注册码(过期时间到2016年)
  8. python3计算运行时间_性能分析之代码运行时间计算——Python timeit 模块 介绍
  9. win10连接共享打印机_win7共享出来的打印机部分电脑无法连接的问题
  10. intellij安装scala插件