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

类加载机制123

类加载机制:

1.全盘负责 类加载器加载某个类时,该类所依赖和引用其它的类也由该类加载器载入

2.双亲委派机制
BootstrapClassLoader:负责加载标准库中的类
ExtensionClassLoader:负责加载 JVM 扩展库中的类
ApplicationClassLoader:负责加载用户提供的第三方库/用户项目代码中的类
这三个加载器彼此存在“父子类”的关系:
BootstrapClassLoader 相当于 ExtensionClassLoder 的父加载器,ExtensionClassLoder 相当于 ApplicationClassLoder 的父加载器。

     标准库的类
BootstrapClassLoader
      ||
	  ||
	 jvm扩展库的类
ExtensionClassLoder
	  ||
	  ||
	用户提供的第三方库(依赖) 和 用户开发编写的类
ApplicationClassLoder	

双亲委派模型就是单加载一个类时,首先从 ApplicationClassLoader 开始,但 ApplicationClassLoader 会把加载任务交给父加载器 ExtensionClassLoader , ExtensionClassLoader 又会把加载任务交给父加载器 BootstrapClassLoader

双亲委派模型就是单加载一个类时,
首先从 ApplicationClassLoader 开始,但 ApplicationClassLoader 会把加载任务交给父加载器 ExtensionClassLoader , ExtensionClassLoader 又会把加载任务交给父加载器 BootstrapClassLoader

BootstrapClassLoader没有父加载器才开始搜索标准库目录的类,找到了就加载,没找到就交给子加载器 ExtensionClassLoader,
ExtensionClassLoader 搜索扩展库的目录,找到了就加载,没找到就交给子加载器 ApplicationClassLoader,
ApplicationClassLoader 搜索用户项目相关目录,找到了就加载,没找到就抛出异常。

双亲委派模型的 加载顺序确保了 BootstrapClassLoader 先加载,ApplicationClassLoader 后加载,可以避免因用户自己写的类导致 JVM 已有代码的混乱。

3.缓存机制 缓存机制保证所有加载过的class都会被缓存,
当程序中需要某个类时,先从缓存区中搜索,
如果不存在,才会读取该类对应的二进制数据,并将其转换成class对象,存入缓存区中。
这就是为什么修改了class后,必须重启JVM,程序所做的修改才会生效 的原因。


http://www.kler.cn/a/371913.html

相关文章:

  • 【JMM】Java 内存模型
  • 微软 2024 最新技术全景洞察
  • 玉米识别数据集,4880张图,正确识别率可达98.6%,支持yolo,coco json,pasical voc xml格式的标注,可识别玉米
  • CDP集成Hudi实战-spark shell
  • Python爬虫基础——认识网页结构(各种标签的使用)
  • qml PathView详解
  • HTML入门教程9:HTML引用
  • java 大集合切分成一个集合中有多个小集合
  • Java程序设计基础 第十七章:反射和设计模式
  • 大话PM | 从项目管理软件看项目管理的三个原则两个思维两个工具
  • 深入 Prometheus 监控生态 - 第五篇:利用 API 信息进行监控(NAS 备份任务监控 + 解决思路)
  • 【约束优化】一次搞定拉格朗日,对偶问题,弱对偶定理,Slater条件和KKT条件
  • 画思维导图的app有哪些?5个软件让你轻松画思维导图不求人
  • PostgreSQL 不同模式之间的数据迁移
  • Python小游戏18——中国象棋
  • 安卓13 连接usb设备后不更新ui
  • Android 应用权限管理详解
  • 【Linux】线程锁同步互斥生产消费模型
  • Windows: 如何实现CLIPTokenizer.from_pretrained`本地加载`stable-diffusion-2-1-base`
  • 网络爬虫的基本原理是什么?
  • 初始Docker
  • NVR设备ONVIF接入平台EasyCVR视频分析设备平台视频质量诊断技术与能力
  • 深入解析 MySQL 数据库:数据类型
  • Rust精简核心笔记:第二波,语法精髓部分解锁
  • 十六:Python学习笔记-- 爬虫(2)requests 模块详解
  • 装饰器怎样实现