加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

什么是双亲委派原则?

发布时间:2021-04-06 14:55:27 所属栏目:传媒 来源:互联网
导读:述问题均和java类加载有关,如果不清楚JVM中类加载的原理,上述问题会让人郁闷至极,侥幸在网上找到解决方案也只是暂时解决问题,后续在另外的场景中碰到又会继续懵逼。 我这篇文章将对 Java 类加载器的双亲委派加载原理进行阐述,并结合实例程序深究类的双

述问题均和java类加载有关,如果不清楚JVM中类加载的原理,上述问题会让人郁闷至极,侥幸在网上找到解决方案也只是暂时解决问题,后续在另外的场景中碰到又会继续懵逼。

我这篇文章将对 Java 类加载器的双亲委派加载原理进行阐述,并结合实例程序深究类的双亲委派加载机制,大家彻底了解掌握类加载原理,清楚了类加载原理后,碰到上述类似问题就能快速解决,并在后续开发中避免类似问题。

什么是Java类加载?

java类加载器负责将编译好的 Java class 件加载到 Java 虚拟机(JVM)中的运行时数据区中,供执行引擎调用。

java类加载在JVM体系结构中的位置如图所示:没有类加载机制,编写的java程序就没法在JVM中运行,因此掌握java类加载是非常重要的。

JVM类加载层级关系

执行java程序时,会启动一个JVM进程,JVM在启动时会做一些初始化操作,比如获取系统参数等等,然后创建一个启动类加载器,用于加载JVM运行时必须的一些类到内存中,同时也会创建其他两个类加载器扩展类加载器和系统类加载器。

启动类加载器、扩展类加载器和系统类加载器之间的关系如下图所示:

  • **启动类加载器:**java虚拟机启动后创建的第一个类加载器,由C++语言实现,所以我们在java代码中查看其信息时,看到的均为null。
  • 扩展类加载器:由启动类加载器加载,并将扩展类加载器中的parent的值设置为null(表示指向启动类加载器),同时继承自URLClassLoader。
  • 系统类加载器:由启动类加载器加载,并将系统类加载期中的parent的值设置为上述创建的扩展类加载器。,同时继承自URLClassLoader。

在代码中可以通过如下方式查看类加载中的parent指向:

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读