当前位置: 首页 > news >正文

面试(类加载器)

一、目标

类加载器(ClassLoader)是Java虚拟机(JVM)的一部分,用于加载Java类文件到内存中,并生成对应的Class对象。类加载器负责在运行时查找和加载类文件,为Java程序提供动态加载和运行时扩展的功能。

二、类型

2.1、启动类加载器(Bootstrap ClassLoader)

也称为根加载器,它是JVM内嵌的加载器,负责加载Java核心类库(如java.lang包中的类)和其他需要在JVM启动时就被加载的类。它是所有其他类加载器的父加载器。由于是用C++实现的,因此在Java代码中无法直接获取到启动类加载器的引用。

2.2、扩展类加载器(Extension ClassLoader):

它是由sun.misc.Launcher$ExtClassLoader实现的,负责加载Java的扩展类库(如javax包中的类)。它是由启动类加载器加载的,并且是应用类加载器的父加载器。

2.3、应用类加载器(Application ClassLoader)

也称为系统类加载器,它是由sun.misc.Launcher$AppClassLoader实现的,负责加载应用程序的类。应用类加载器是用户自定义的类加载器的默认父加载器。

三、加载策略

3.1、问题

解决类的加载顺序、一致性、可靠性、唯一性等;

3.2、双亲委派机制

双亲委派机制(Delegation Model)是Java类加载器的一种加载策略,它定义了类加载器在加载类时的行为和优先级。

双亲委派机制的基本思想是:当一个类加载器需要加载一个类时,它首先将加载请求委派给父类加载器,只有当父类加载器无法加载该类时,才由自身加载器进行加载。这个过程会一直循环,直到顶层的启动类加载器。如果所有的父类加载器都无法加载该类,最终由子类加载器加载。

3.3、优势

1、避免类的重复加载:每个类加载器都有自己的命名空间,当父类加载器已经加载了一个类,子类加载器无需重新加载,直接使用父类加载器加载的类,避免了重复加载。

2、提供类加载的安全性和一致性:通过双亲委派机制,类加载器会沿着加载链向上委派加载请求,保证了加载的类来自于同一个源,确保了类的安全性和一致性。

3、确保核心类的一致性:由启动类加载器加载的核心类库是Java虚拟机的一部分,能够保证在不同的Java应用中,加载的核心类库是一致的。

需要注意的是,双亲委派机制并不是强制性的,可以通过自定义类加载器绕过双亲委派机制,实现特定的加载逻辑,例如热部署等需求。

双亲委派机制在Java中的应用非常广泛,不仅用于加载Java核心类库,还用于加载应用程序的类。它确保了类的加载按照优先级和一致性进行,提供了类加载的可靠性和安全性。

http://www.lryc.cn/news/164356.html

相关文章:

  • 二维差分---基础算法
  • C++之结构体智能指针shared_ptr实例(一百九十四)
  • 初出茅庐的小李博客之根据编译时间生成软件版本号
  • “投资教父”熊晓鸽老了,IDG光环不再
  • XEX智能交易所:加密货币衍生品杠杆、期货和期权简介
  • 记录第一次带后端团队
  • Python文件操作(02):读文件
  • Flink(java版)
  • 什么是动态组件以及使用场景
  • CRM销售管理系统如何提高销售效率
  • 纯小白安卓刷机1
  • C高级day4循环语句
  • Linux 操作系统云服务器安装部署 Tomcat 服务器详细教程
  • 【易盾点选】
  • vue中打印指定dom元素
  • OpenCV(三十六):霍夫直线检测
  • 文心一言 VS 讯飞星火 VS chatgpt (91)-- 算法导论8.3 4题
  • keep-alive缓存三级及三级以上路由
  • vite vue项目 运行时 \esbuild\esbuild.exe 缺失 错误码 errno: -4058, code: ‘ENOENT‘,
  • favicon.ico网站图标不显示问题 Failed to load resource: net::ERR_FILE_NOT_FOU
  • 微服务·架构组件之服务注册与发现-Nacos
  • Linux驱动【day2】
  • 4、Nginx 配置实例-反向代理
  • 2023年世界机器人大会回顾
  • Mac系统 AndroidStudio Missing essential plugin:org.jetbrains.android报错
  • 读书笔记:多Transformer的双向编码器表示法(Bert)-1
  • 第二证券:股利支付率和留存收益率的关系?
  • 煤矿虚拟仿真 | 采煤工人VR虚拟现实培训系统
  • buuctf crypto 【[GXYCTF2019]CheckIn】解题记录
  • 微服务05-Docker基本操作