Jvm-08a.类加载器

news2024/9/20 22:50:48

类与类加载器

对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。

通俗的讲就是比较两个类是否"相等",只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个Class文件,被同一个Java虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等

上文所指的"相等"具体有哪些:

  • 类的Class对象的 equals() 方法
  • isAssignableFrom() 方法
  • isInstance() 方法
  • instanceof

双亲委派模型

在这里插入图片描述

启动类加载器

  • 加载目录:$JAVA_HOME/lib 或被 -Xbootclasspath 参数指定的路径
  • 类库的文件名是固定的,例如:rt.jar、tools.jar,名字不符合的即时放在目录中也不会加载
  • 启动类加载器无法被直接引用,如果在自定义加载器时,需要把加载请求委派到引导类加载器去处理,直接用 null 代替即可

扩展类加载器

  • sun.misc.Launcher$ExtClassLoader
  • 加载目录:$JAVA_HOME/lib/ext 或被 java.ext.dirs 系统变量所指定的路径中的所有类库

应用程序类加载器

  • sun.misc.Launcher$AppClassLoader
  • ClassLoader#getSystemClassLoader()
  • 负责加载用户类路径(ClassPath)上的所有类库
  • 可以在代码中使用

工作过程

如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去完成加载。

这样做的好处是

  • Java中的类随着它的的类加载器一起具备了一种带有优先级的层次关系;
  • 可以保证类在各种类加载器环境中都是同一个类;

参考资料

  • 《深入理解Java虚拟机》章节7.4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式实战 | 迭代器模式 | 分词器

1、场景 假设有下面这样一个字符串属性, 代表着属性逐级调用, 我们需要解析出每一个字段属性方便我们后续进行业务处理。 String properties "school.teacher[语文].student[3].user[4].english.score";2、传统写法 遍历该属性字符串然后不…

ChatGLM-6B模型结构组件源码阅读

一、前言 本文将介绍ChatGLM-6B的模型结构组件源码。 代练链接:https://huggingface.co/THUDM/chatglm-6b/blob/main/modeling_chatglm.py 二、激活函数 torch.jit.script def gelu_impl(x):"""OpenAIs gelu implementation."""r…

k8s系列(三)——kubernetes架构及部署

引入 在正式引入K8s之前,我们先来看一张图 虚拟化技术演历路径可分为三个时代: 物理机时代,多个应用程序可能跑在一台物理机器上; 这种方式会造成一旦某个服务出现溢出或者未知的错误,从而影响机器上所有服务的正常…

C++ -- 红黑树封装set和map

文章目录 1. 红黑树概念和性质1.1 概念1.2 性质1.3 实例1.4 分析 2. 节点定义3. 插入操作4. 检测5. 红黑树代码6. 红黑树实现set和map6.0 类设计图6.1 红黑树包装复用6.2 红黑树实现set6.3 红黑树实现map6.4 剖析代码6.4.1 如何复用6.4.2 如何区分set和map比较方式6.4.3 set和m…

如何用appuploader上架

转载:下载和安装appuploader IOS开发工具官网地址 Appuploader home -- A tool improve ios develop efficiency such as submit ipa to appstore and manage ios certificate 最新版本已经优化了没支付688给apple的账号登录流程,无需再安装其他软件。…

SDK案例配置记录

目前的极简配置 注意事项 默认的属性配置中,大多采用环境变量的形式,方便不同设备通用 比如“常规”->“输出目录”为 $(SolutionDir)..\bin\win_msvc2017$(Platform)\$(Configuration)\案例运行前的配置(除MwBatchSimPlugin&#xff0…

如何评估用户需求的价值?关键看4方面

一、需求本身是否有价值 评估一个需求是否有价值,主要是通过以下几个方面:需求的产生源、需求产生的时机(情景价值)、需求如何产生(问题解决价值)、需求如何解决(解决需求)。 在情景…

web安全学习笔记【网络安全】

前言 本文简单记录一下我学习 Web 安全方面的笔记。 本文不涉及 IIS、Windows 和 SqlServer 的安全管理与配置,尽量只谈编程相关的安全问题。 这个 Web 安全学习路线,整体大概半年左右,具体视每个人的情况而定。 (上传一直很模…

支持AI算法定制的4G摄像头模组解决方案

随着科技的不断发展,现在人们对于监控摄像头的需求越来越高,但是市场上的大多数摄像头组件都是标准化的,很难满足不同应用场景的需求。 不过,现在有了这款支持AI算法定制的4G摄像头模组解决方案,这个问题就完美的解决了…

shell脚本教程

目录 一、shell历史 二、执行脚本 三、基本语法 3.1变量 3.1.1变量的分类 3.1.2删除变量 3.2文件名代换(Globbing) 3.3命令代换 3.4算术代换 3.5转义字符 3.6单引号 3.7双引号 四、Shell脚本语法 4.1条件测试 4.2分支 4.2.1if/then/elif…

重磅!用友荣登全球5强

近日,全球权威信息技术研究和顾问公司Gartner发布《Market Share: All Software Markets, Worldwide,2022》报告,用友在EAM(资产管理)市场再创新高,市场占有率位居全球第五位,亚太第一位&#x…

quic详解

目录 一 http简介 二 quic协议详解 1 重传机制 2 流量控制 3连接迁移 一 http简介 http0.9 1991年发布, 没有header,功能非常简单,只支持GET http1.0 1996年发布,明文传输安全性差,header特别大。它相对0.9有以…

postgres_exporter 部署

目录 - 下载地址- 配置环境变量- 启动vim ./start.shvim ./stop.shqueries.yaml - 配置prometheus - 下载地址 https://github.com/prometheus-community/postgres_exporter/releases - 配置环境变量 - 启动 因启动前需要配置环境变量后再进行启动 运行如下语句&#xff1a…

【自动化测试入门知识】自动化测试生命周期

如今,项目经理和开发人员面临着用最少的资源并在日渐缩减的时间表中构建可靠应用程序的挑战。因此,组织正在转向自动化测试以有效地实现此目标。 在自动化测试方面,我们许多人认为这只是SDLC(软件开发生命周期)的一部…

【竣达】浅谈电视台机房智能化动力环境监控系统管理

电视台作为面向全国甚至是世界的广播平台,在节目转播过程中不能有任何的闪失,为了最大限度保障电视节目的安全播出,一套完整的机房动力环境监控系统必不可少。 电视台机房及广播控制室建立包括机房动力、环境及安防的监控系统,主…

30岁女程序媛,对职业和未来的迷茫和焦虑

前言 2023快过去一半马上就要2024年了,92年的我就要步入30的行列了。 一转眼,也到了三十而立的年纪。 反观自己,到了这个时候,更多的是迷茫、彷徨、焦虑、无措 但也在不断地跌跌撞撞中,找到了自己的节奏和目标。 …

程序员一个月拿两万,得知卖猪肉可以赚五万,你是选择做程序员还是卖猪肉?

在知乎上看到这么个帖子,觉得挺有意思,大家一起瞧瞧? 对此,我也看到了许多犀利的回答哈 **A:**我反过来问你,如果一对夫妇卖猪肉一个月只能挣一万,听说一名程序员一个月拿五万,他们…

【轻量化网络系列(1)】MobileNetV1论文超详细解读(翻译 +学习笔记+代码实现)

前言 这几天学了一下轻量化网络,我们先从MobileNetV1讲起吧~ MobileNetV1网络是谷歌团队在2017年提出的,专注于移动端和嵌入设备的轻量级CNN网络,相比于传统的神经网络,在准确率小幅度降低的前提下大大减少模型的参数与运算量。…

机器学习 day13(正则化,线性回归的正则化,逻辑回归的正则化)

正则化的思想 如果特征的参数值更小,那么对模型有影响的特征就越少,模型就越简单,因此就不太容易过拟合 如上图所示,成本函数中有W₃和W₄,且他们的系数很大,要想让该成本函数达到最小值,就得使…

【软件测试】未来软件测试必备的八大技能!你缺少哪个?

软件测试工程师是个神奇的职业,他是开发人员与老板之间的传话筒(三夹板),也是开发人员与老板的好帮手; 他不仅需要有销售的沟通能力,也需要具备编辑人员的文档撰写技巧。如此一个面面俱到的岗位&#xff0…