类加载器(ClassLoader)

article/2025/9/18 8:48:30

一、类加载器(ClassLoader)

1.1 什么是类加载器

  Java的类加载器是Java虚拟机(JVM)的重要组成部分,它的主要作用是动态地将Java类加载到JVM中,以便在运行时使用这些类。Java类加载器通常是由JVM的实现者提供的,但用户也可以通过扩展ClassLoader类来定义自己的类加载器。
在这里插入图片描述

  Java类加载器采用了双亲委派模型,即在加载一个类时,会先由父类加载器尝试加载该类,如果父类加载器无法加载,则交给子类加载器去尝试加载。这样可以确保Java类的唯一性,同时也可以防止Java类库被恶意篡改。

  Java类加载器可以分为三个层次:启动类加载器、扩展类加载器和应用程序类加载器。启动类加载器是JVM的一部分,用于加载Java核心类库,扩展类加载器用于加载JVM扩展的一些API,而应用程序类加载器则用于加载应用程序中的类。

1.2 类加载器的三个层次

  1. 启动类加载器

  启动类加载器(Bootstrap ClassLoader)是Java虚拟机的一部分,是用本地代码实现的类加载器,主要用于加载JRE/lib目录下的核心Java类库,如rt.jar、charsets.jar等。启动类加载器是Java虚拟机最顶层的类加载器,它没有父类加载器。

  启动类加载器使用C++编写,因此无法在Java代码中获取到它的引用。启动类加载器加载的类不受限于类路径的限制,因为它在Java虚拟机启动时就已经被加载了。

  1. 扩展类加载器

  扩展类加载器(Extension ClassLoader)是由Java代码实现的类加载器,它的父类加载器是启动类加载器。扩展类加载器用于加载Java扩展API,这些API通常存放在JRE/lib/ext目录下,如jconsole.jar、jmxremote.jar等。

  扩展类加载器在Java虚拟机启动时会被创建,它的类加载路径可以通过系统属性java.ext.dirs来指定。如果要使用自定义的扩展类加载器,也可以通过设置java.system.class.loader系统属性来指定。

  1. 应用程序类加载器

  应用程序类加载器(Application ClassLoader),也称为系统类加载器(System ClassLoader),是Java虚拟机中最常用的类加载器,它的父类加载器是扩展类加载器。应用程序类加载器用于加载应用程序中的类,通常存放在CLASSPATH环境变量或者-cp命令指定的目录下。

  当Java虚拟机需要加载一个类时,会先让应用程序类加载器尝试加载该类,如果应用程序类加载器无法加载,则会依次由其父类加载器进行加载,直到启动类加载器为止。

  如果应用程序类加载器的父类加载器无法找到某个类,应用程序类加载器也无法加载该类,因为Java类加载器采用双亲委派模型,即父类加载器优先委派给子类加载器进行加载。
在这里插入图片描述

  1. 其他

类加载器可以通过getClassLoader()方法获取到:

例如:

public class TestClassLoader {public static void main(String[] args) {System.out.println(TestClassLoader.class.getClassLoader());System.out.println(TestClassLoader.class.getClassLoader().getParent());System.out.println(TestClassLoader.class.getClassLoader().getParent().getParent());}
}

结果:

jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc
jdk.internal.loader.ClassLoaders$PlatformClassLoader@58ceff1
null

由此可见应用程序类加载器和扩展类加载器都可以被获取到,而启动类加载器因为是由C++所编写的所以获取时为空;

加载特性:

自顶向下尝试加载,自底向上检查是否加载成功;

在这里插入图片描述


http://chatgpt.dhexx.cn/article/VGEg2sqf.shtml

相关文章

什么是类加载器,类加载器如何分类

一、类加载器 1.什么是类加载器 类加载器:负责将.class文件(存储的物理文件)加载到内存中 2.类加载时机: ① 创建类的实例(对象) ② 调用类的实例方法 ③ 访问类或者接口的类变量,或者为该…

深入理解Java虚拟机——再谈类的加载器——第十二章——中篇

深入理解Java虚拟机——Java虚拟机介绍——第一章 深入理解Java虚拟机——类加载子系统——第二章 深入理解Java虚拟机——运行时数据区和本地方法接口——详细篇——第三章 深入理解Java虚拟机——对象的实例化内存布局与访问定位——超级详细篇——第四章 深入理解Java虚拟机…

类加载器详解

类加载器的分类 JVM支持两种类型的类加载器,分别为引导类加载器(BootstrapClassLoader)和自定义类加载器(User-Defined ClassLoader) 从概念上来讲, 自定义类加载器一般指的是程序中由开发人员自定义的一类,类加载器,但是Java虚拟机规范却没有这么定义,而是将所有派生于抽象类…

Java - 类加载器

文章目录 1. 类加载的过程2. 类加载器的分类2.1 引导类加载器 Bootstrap2.2 扩展类加载器 ExtClassLoader2.3 系统类加载器 AppClassLoader2.4 三者之间的关系2.5 自定义类加载器2.6 注:谁来准备类加载器呢? 3. 双亲委派机制4. ClassLoader抽象类5. URLClassLoader…

DAU 和 MAU

DAU 和 MAU 日活跃用户占月活跃用户的比例越高,表明用户对App的使用粘性越高。 DAU,即:Daily Active User,指日活跃用户数 MAU,即:Monthly Active User,指月活跃用户数。 *例子1:…

如何通过DAU分析活跃用户?(案例:python绘制箱体图)

前言:本文内容以游戏产品为基础进行讲解,内容为以下4部分: 1. 如何理解DAU反映了哪些问题? 2. 有哪些因素会影响DAU变动? 3. 如何解读DAU的“箱体图”? 4. 如何使用python绘制“箱体图”? DAU的…

【数据分析】产品日活DAU下降,怎么分析

目录 案例简介 第一步:确认数据真实性 第二步:明确定义,并拆解指标,进一步定位原异常部分 第三步:根据几个常见维度初步拆分数据 第四步:进一步做假设并细分深入,得出结论 案例分析 例题…

数据分析——DAU下降问题(转)

文章转自: DAU异常下降该如何分析 1. 梳理公司的用户增长模式 尽管不同业务形态、以及不同发展阶段的公司,其用户增长模式各有差异,但都可以从拉新策略和促活策略进行分解。 常见的拉新策略有: 流量采购。比如通过厂商预装、…

有赞一面:亿级用户DAU日活统计,有几种方案?

说在前面 在40岁老架构师 尼恩的读者社区(50)中,最近有小伙伴拿到了一线互联网企业如极兔、有赞、希音、百度、网易、滴滴的面试资格,遇到一几个很重要的面试题: (1) 亿级用户场景,如何高性能统计日活? (2) 如何实现亿…

数据分析——用户粘性指标 DAU/MAU

( 一 )定义 DAU,即:Daily Active User,指日活跃用户数; MAU,即:Monthly Active User,指月活跃用户数。 日活/月活就是体现用户粘性最频繁使用的指标。日活跃用户占月活…

数据分析体系 - 用户粘性(DAU/MAU 和 月人均活跃天数)

对于常见的App,用户粘性的取值范围就是3%~100%, 不同领域的App也会有不同的基准值, 例如移动游戏会以20%为基线, 而工具类App会以40%为基线。 用户粘性的两个计算指标: 1、DAU/MAU 2、月平均活跃人数 这里其实…

数据分析——DAU下降/上升原因分析

本文是对“DAU变动原因”问题进行的思考整理,仅作记录,欢迎讨论。 ( 一 )思维框架 图版: 文版: 内部原因: 1. 数据验证 如果DAU上升或者下降,且非日常波动,需先确…

数据分析 — 用户粘性的两个计算指标(DAU/MAU和月人均活跃天数)

很多运营都了解DAU(日活跃用户数)和MAU(月活跃用户数)的重要性,但在某些情况下这两个数值本身并不能反映出太多问题,这个时候就要引用到【DAU/MAU】的概念,即【日活/月活】。 用户粘性的两个计…

峰值21WQps、亿级DAU,小游戏《羊了个羊》是怎么架构的?

小游戏《羊了个羊》 短短的7天内,DAU突破了1亿、吞吐量峰值21WQps。 《羊了个羊》运营后台数据显示,在短短的7天内,这款小游戏的DAU就突破了1亿。 要知道,除了王者荣耀、原神等屈指可数的现象级手游之外,1亿DAU是这个…

dau、mau、pcu、dnu、wau、acu、uv分别是什么意思?

dau、mau、pcu、dnu、wau、acu、uv的意思是什么?怎么分析? DAU(Daily Active User)日活跃用户数量。常用于反映网站、互联网应用或网络游戏的运营情况。 MAU(monthly active users)月活跃用户人数。是在线游戏的一个用户数量统计名词,数量越大意味着玩这款游戏的人…

数据化运营04 DAU、MAU、UV:谁是最有参考价值的活跃指标?

活跃类指标是重要的用户质量指标,代表了产品上真正的用户,代表了具备营销价值的用户群,是几乎所有产品运营的重点。 在这一讲中,我会主要向你介绍 UV、DAU、MAU,以及每日使用时长和每日打开频次等指标。 你是否思考过…

如何理解、分析DNU/DAU?(案例:DNU、DAU面积图)

前言:本文内容以游戏产品为基础进行讲解,内容为以下4部分: 1. 如何理解DNU和DAU 2. 如何使用python绘制DNU和DAU的面积图 3. 如何分析DNU/DAU 4. 如何计算当日DAU有多少由往日N日DAU贡献的,并简单计算用户生命周期? DN…

DAU是啥,数据指标是啥?必知必会的数据分析常识

在刚迈入数据的大门时,我经常对一些数据指标或者数据本身的概念很模糊,尤其是当跟运营、数据分析师扯需求的时候,会被这些密密麻麻的指标给弄糊涂。为了更好的在行业里面摸打滚爬,花了很多时间阅读一些指标相关的文章、书籍&#…

dau、mau、pcu、dnu、wau、acu、uv的意思是什么?怎么分析?

dau、mau、pcu、dnu、wau、acu、uv的意思是什么?怎么分析? DAU(Daily Active User)日活跃用户数量。常用于反映网站、互联网应用或网络游戏的运营情况。 MAU(monthly active users)月活跃用户人数。是在线游戏的一个用户数量统计名词,数量越大意味着玩这款游戏的人…

dau、mau、pcu、dnu、wau、acu、uv的意思是什么?

dau、mau、pcu、dnu、wau、acu、uv的意思是什么?怎么分析? 名词分析 DAU(Daily Active User)日活跃用户数量。常用于反映网站、互联网应用或网络游戏的运营情况。 MAU(monthly active users)月活跃用户人数。是在线游戏的一个用户数量统计名词,数量越大意味着玩…