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

JVM类加载

JVM类加载

  • 1. 类的生命周期(类加载过程)
    • 类加载的五个阶段:
  • 2. 类加载器的分类
  • 3. 双亲委派模型
  • 4. 类的卸载与热加载
  • 5.类加载器命名空间隔离

1. 类的生命周期(类加载过程)

类加载的五个阶段:

  1. 加载(Loading):通过类的全限定名获取二进制字节流,生成Class对象
  2. 验证(Verification):确保字节码安全、符合JVM规范
  3. 准备(Preparation):为类的静态变量分配内存,并初始化为默认值
  4. 解析(Resolution):将符号引用转为直接引用(链接其他类)
  5. 初始化(Initialization):执行静态代码块、静态变量赋值
    “准备阶段只赋默认值,初始化阶段才赋初始化值”

2. 类加载器的分类

JVM提供了三种类加载器

1. 启动类加载器(Bootstrap ClassLoader):通过C/C++实现,负责加载Java核心类库,如jre的lib目录下的核心类。 	
2. 扩展类加载器(Extension ClassLoader):通过Java实现,对jre下lib/ext目录中的类库或者通过java.ext.dirs系统属性指定的路径的类库。
3. 应用程序类加载器(Application ClassLoader):就是我们写的程序、类。

除了上述三种类加载器,用户还可以通过继承java.lang.ClassLoader类的方式创建自己的类加载器,已实现特定需求。

3. 双亲委派模型

什么是双亲委派机制?为什么要用它?

  • 定义:
    在类加载器加载类时,会将请求交由父类加载器处理,只有在父类加载器无法完成时,才由当前加载器尝试加载。
    JVM的类加载机制采用双亲委派模型。这个模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器。类加载器在尝试自己去加载类时,首先会委托给父类加载器去完成,每个层次的类加载器都是如此,这样所有的类加载请求最终都会传送到顶层的启动类加载器中。如果父类加载器无法完成这个请求(它的搜索范围中没有找到所需的Class),子类加载器才会尝试自己去加载。
  • 好处:
    1. 避免类的重复加载
    2. 保证核心类(如 java.lang.*)不被恶意篡改
  • 哪些场景打破了双亲委派机制?
  • Servlet容器、Springboot 自定义类加载器、SPI机制等…

4. 类的卸载与热加载

类会被卸载吗?哪些情况下类会被卸载?

  • 类的卸载只会发生在满足以下条件:
    • 该类所有对象都被回收
    • 加载该类的 ClassLoader 也被回收
    • Class对象本身不可达
      JVM的类不会频繁卸载,web容器中热部署常见类卸载问题

5.类加载器命名空间隔离

不同的类加载器加载的相同类是同一个类吗?
不是。即使

http://www.xdnf.cn/news/404893.html

相关文章:

  • 生产环境怎么移除console
  • WebSocket集成方案对比
  • 中华春节符号全球推广委员会——“金文形意书《易经》成果展”研学之旅
  • 【Spark】使用Spark集群搭建Yarn模式
  • Docker-配置私有仓库(Harbor)
  • mapreduce-wordcount程序2
  • PostgreSQL 中的序列(Sequence)
  • 力扣HOT100之二叉树:226. 翻转二叉树
  • WSL-Ubuntu 中安装 Git LFS 记录
  • 网络编程epoll和udp
  • 华为防火墙配置与网络协议实战指南:从基础到高阶排查
  • 破局智算瓶颈:400G光模块如何重构AI时代的网络神经脉络
  • 大模型的实践应用41-天气预测与分析决策系统:Qwen3(32B)+langchain框架+MCP(大模型上下文协议)+RAG+传统算法
  • RabbitMQ高并发秒杀、抢购系统、预约系统底层实现逻辑
  • ArcGIS+InVEST+RUSLE:水土流失模拟与流域管理的高效解决方案;水土保持专题地图制作
  • 《Python星球日记》 第63天:文本方向综合项目(新闻分类)
  • 危化品安全员职业发展方向的优劣对比
  • 人工智能时代:解锁职业新身份,从“认证师”到“工程师”的进阶之路
  • 图灵爬虫练习平台第九题js逆向
  • 电力系统静态安全因素与动态安全因素的区别及具体分类
  • matlab计算天线的近场和远场
  • ThreadLocal原理分析--结合Spring事务
  • 产品设计基石--用户体验要素--实战4
  • 【课题推荐】基于改进遗传算法的公交车调度排班优化研究与实现方案
  • PID与模糊PID系统设计——基于模糊PID的水下航行器运动控制研究Simulink仿真(包含设计报告)
  • 在Web应用中集成Google AI NLP服务的完整指南:从Dialogflow配置到高并发优化
  • Codeforces Round 1024 (Div. 2)(A-D)
  • 1.8 梯度
  • FanControl(电脑风扇转速控制软件) v224 中文版
  • Blueprints - Gameplay Message Subsystem