当前位置: 首页 > 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.xdnf.cn/news/1303795.html

相关文章:

  • PAT 1064 Complete Binary Search Tree
  • 计算机网络:(十五)TCP拥塞控制与TCP拥塞控制算法
  • 【161页PPT】智慧方案企业数字化转型概述(课件)(附下载方式)
  • AutoSar AP平台功能组并行运行原理
  • [论文阅读] 人工智能 | 当Hugging Face遇上GitHub:预训练语言模型的跨平台同步难题与解决方案
  • JVM执行引擎深入理解
  • 剧本杀小程序系统开发:重构推理娱乐生态
  • 大模型幻觉涉及的违约责任探讨
  • 回路自感和回路互感
  • 补充日志之-配置文件解析指南(Centos7)
  • 德州扑克游戏术语
  • 银河麒麟服务器jar包部署自启动配置
  • 第十八讲:哈希2
  • 神经网络 小土堆pytorch记录
  • 开疆智能Ethernet转ModbusTCP网关连接测联无纸记录仪配置案例
  • 《探秘浏览器Web Bluetooth API设备发现流程》
  • 解决 MySQL 查询速度缓慢的问题
  • 前端更改浏览器默认滚动条样式
  • 13_集合框架
  • Linux815 shell:while
  • 口播数字人免费API调用方案
  • Elasticsearch赋能规章制度智能检索:从海量文档到秒级响应
  • linux-----------------锁
  • mysql启动超时
  • 本地生活|MallBook 分账赋能浙江本地生活服务平台,助力实现资金流转效率与合规性的双提升!
  • 高通vendor app访问文件
  • LeetCode hot 100 day2
  • AAAI爆款:目标检测新范式,模块化设计封神之作
  • 办公效率提升指南:完成重复任务自动化
  • 【自动化测试】通过AI技术如何自动建设接口自动化用例(有关必回)