首页 > 其他分享 >【JVM-双亲委派模型】

【JVM-双亲委派模型】

时间:2024-08-22 10:26:43浏览次数:13  
标签:委派 类库 Java 双亲 JVM 父类 加载

在 Java 中,双亲委派模型是一种类加载机制。

一、定义与工作原理

当一个类加载器收到类加载的请求时,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成。只有当父类加载器无法完成加载请求(在它的搜索范围内找不到所需的类)时,子类加载器才会尝试自己去加载。

例如,假设自定义类加载器 C 收到加载类 X 的请求,它首先将请求委派给其父类加载器 B,B 又将请求委派给其父类加载器 A。如果 A 在其特定的路径下找不到类 X,B 会尝试在自己的路径下查找,若仍未找到,最后 C 才在自己的路径下查找。

二、优势

  1. 避免类的重复加载:

    • 由于父类加载器优先加载,同一个类不会被多个类加载器重复加载。这确保了 Java 程序中类的唯一性,避免了资源浪费和潜在的冲突。
    • 例如,如果没有双亲委派模型,用户自己编写的与核心类库中同名的类可能会被加载多次,导致程序出现不可预测的行为。
  2. 保证核心类库的安全性:

    • 核心类库(如 java.lang 包下的类)由启动类加载器加载,启动类加载器是最顶层的类加载器,用户自定义的类加载器无法加载核心类库中的类。
    • 这样可以防止恶意代码通过自定义类加载器加载自己伪造的核心类库类,从而提高了系统的安全性。

三、实现方式

在 Java 中,双亲委派模型主要通过以下方式实现:

在类加载器的 loadClass 方法中,首先检查父类加载器是否已经加载了该类,如果没有则递归调用父类加载器的 loadClass 方法,只有当父类加载器无法加载时,才调用当前类加载器的 findClass 方法来查找并加载类。

总的来说,双亲委派模型是 Java 类加载机制的重要组成部分,它保证了类的唯一性和安全性,对 Java 程序的稳定运行起着关键作用。

标签:委派,类库,Java,双亲,JVM,父类,加载
From: https://blog.csdn.net/weixin_43933594/article/details/141421512

相关文章

  • 【JVM-类加载器】
    在JVM中主要有以下几种类加载器:一、启动类加载器(BootstrapClassLoader)作用:负责加载JVM自身需要的核心类库,这些类库主要是Java安装目录下的jre/lib目录中的类。例如,加载Java的核心类库如java.lang包下的类,包括Object、String等。特点:由C/C++语言实现......
  • 【jvm】栈和堆的区别
    目录1.用途2.线程共享性3.内存分配和回收4.生命周期5.性能特点1.用途1.堆:主要用于存储对象实例和数组。在Java中,所有通过new关键字创建的对象都会被分配到堆上。堆是一个大的内存池,用于存储所有的Java对象,包括实例变量和数组。2.栈:主要用于存储局部变量、......
  • JVM
    JVM是什么:是操作系统上Java运行的环境。JVM内存结构模型:调优和垃圾回收都是在堆里的   双亲委派:各种类加载器是层级关系,Java文件首先会给父类加载,类加载器实际上就是很多jar包,每个类加载器会检查自己的jar包是否可以处理Java文件,不可以会给下一层,如果都不可以就会抛出异......
  • 深入Java虚拟机JVM类加载学习笔记
    1.类加载过程----------以及风中叶老师在他的视频中给了我们一段程序,号称是世界上所有的Java程序员都会犯的错误加载---验证---准备---解析---初始化---使用---卸载诡异代码如下:packagetest01;classSingleton{ publicstaticSingletonsingleton=newSingleton();......
  • Java面试题--JVM大厂篇之未来已来:为什么ZGC是大规模Java应用的终极武器?
           ......
  • JVM 类加载机制
    类加载器2.1.1简介分类说明启动类加载器负责加载<JAVA_HOME>\lib目录中的核心类库,如resources.jar等;负责加载被-Xbootclasspath参数所指定的路径中的,并且是虚拟机识别的类库;这个加载器是C++编写的,随着JVM启动。扩展类加载器负责加载<JAVA_HOME>\lib\ext目录中的类......
  • JVM 内存区域
    一、JVM简介【概述】JVM是Java虚拟机(JavaVirtualMachine)的简称,是一种用于计算设备的规范,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。我们学习使用的基本都是HotSpot虚拟机。【优点】优点说明实现跨平台运行让底层代码和运行环......
  • Java面试题———JVM篇
    目录1、JVM的主要组成部分有哪些2、堆栈的区别是什么3、JVM的类加载器有哪些4、什么是双亲委派模型5、说一下类加载器的执行过程6、怎么判断对象是否可以被回收7、JVM的垃圾回收算法有哪些8、JVM的垃圾回收器都有哪些1、JVM的主要组成部分有哪些JVM主要分为下面几......
  • 深入理解JVM运行时数据区(内存布局 )5大部分 | 异常讨论
    前言:    JVM运行时数据区(内存布局)是Java程序执行时用于存储各种数据的内存区域。这些区域在JVM启动时被创建,并在JVM关闭时销毁。它们的布局和管理方式对Java程序的性能和稳定性有着重要影响。  一、由以下5大部分组成1.Heap堆区(线程共享)概念:堆是JVM中最大......
  • Java面试题--JVM大厂篇之掌控Java未来:深入剖析ZGC的低停顿垃圾回收机制
    Java面试题--JVM大厂篇之掌控Java未来:深入剖析ZGC的低停顿垃圾回收机制引言:正文:一、ZGC的核心机制1.并发标记和重定位(Relocation)2.染色指针(ColoredPointers)与读屏障(LoadBarriers)二、实际案例分析1.在线游戏服务器2.金融交易系统三、解决方案和技巧1.调整ZGC参数......