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

Java-JVM是什么JVM的类加载机制

一.JVM是什么

1.jvm是java虚拟机,是java程序运行的基础环境

2.jvm运行的是java源代码经过编译后的class文件,这些class文件经过jvm负责解释或即时编译为对应平台的机器码并执行

3.class文件也可以通过其他【jvm languages】经过编译后得到,例如scala、kotlin、groovy等

二.JVM的类加载机制

JVM的类加载机制分为:加载,链接,初始化三个阶段

链接又分为验证,准备,解析三个阶段

1.加载

将二进制流读入内存,生成一个class对象

加载机制-双亲委派机制

即加载器加载类时先把请求委托给自己的父类加载器执行,直到顶层的启动类加载器.

父类加载器能够完成加载则成功返回,不能则子类加载器才自己尝试加载.

(图源黑马)

优点:

1. 避免类的重复加载
2. 避免Java的核心API被篡改

如何打破双亲委派机制:

1. 自定义类加载器时,重写 `ClassLoader` 的 `loadClass` 方法,改变默认的 “先委派父加载器” 逻辑。比如,可强制让自定义加载器优先加载特定路径、特定前缀的类,而非严格遵循双亲委派的委派顺序。
2. Java 标准库中(如 JDBC、JAXP ),核心类由启动类加载器加载,但实现类(如 MySQL JDBC 驱动)在应用类路径。为让核心类(父加载器加载)能加载应用类路径的实现类,`ServiceLoader` 会**反向委派**:父加载器(如 `Bootstrap ClassLoader` )加载的类,委派给应用类加载器(`AppClassLoader` )加载其实现类,打破 “父加载器无法请求子加载器” 的双亲委派限制。
3. OSGi 是模块化框架,每个模块(Bundle)有独立类加载器。加载类时,**按需委派**:可配置加载策略(如 “先自己加载,再委派父加载器”,或 “特定包委派给指定加载器” ),完全突破双亲委派的固定顺序,实现类加载的 “细粒度控制”。

2.链接

2.1验证

验证加载进来的二进制流是否符合一定格式

2.2准备

为类或接口的静态字段赋默认值

2.3解析

将常量池的符号引用转换为直接引用

3.初始化

执行静态代码块,为静态变量赋值

http://www.dtcms.com/a/333724.html

相关文章:

  • 设备 AI 知识库,管理效率新飞跃
  • 安装openmmlab时出错
  • 码上爬第七题【协程+对抗格式化检测+数组移位】
  • Linux搭建ftp服务器
  • 事务的四大特性
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘fairseq’问题
  • ubuntu安装docker
  • Python爬取推特(X)的各种数据
  • Higress AI网关
  • 新手入门 Makefile:FPGA 项目实战教程(三)
  • Android - 动态切换桌面图标
  • Rubber Band Optimation算法python实现
  • linux-----------------锁
  • [Chat-LangChain] 会话图(LangGraph) | 大语言模型(LLM)
  • 第二十四天:虚函数与纯虚函数
  • 速卖通平台关键字搜索商品列表列表接口实现指南:从接口分析到代码落地
  • Linux之高可用集群实战(二)
  • Tokenizer(切词器)的不同实现算法
  • 异步任务执行顺序
  • DC6v-36V转3.2V1A恒流驱动芯片WT7017
  • 【嵌入式C语言】五
  • 如何一个响指删除计算机里的一半文件?(二)
  • 【工具】多图裁剪批量处理工具
  • 基于element-plus和IndexedDB数据库的基础表单
  • 嵌入式:Linux软件编程:线程
  • 深入浅出的 RocketMQ-面试题解析
  • AI架构师生存手册:图解避坑MCP工具链/智能体RAG/推理蒸馏实战
  • TF 上架协作实战,跨部门配合下的内测发布节奏管理
  • Cursor CLI 技术解析:免费调用 GPT-5 的命令行方案
  • 工控机的用途与介绍:工业自动化的重要引擎