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

【jvm】Minor GC

目录

          • 1. 说明
          • 2. JVM内存结构
            • 2.1 年轻代
            • 2.2 老年代
            • 2.3 永久代/元空间
          • 3. 工作原理
          • 4. 触发条件
          • 5. 影响
          • 6. 优化策略

1. 说明
  • 1.minor是较小的、较少的、次要的含义。
  • 2.在Java虚拟机中,Minor GC是指针对于年轻代(Young Generation)进行的垃圾回收操作。
2. JVM内存结构
2.1 年轻代
  • 1.Young Generation。
  • 2.用于存储新创建的对象。
  • 3.伊甸园区(Eden Space):新对象首先被分配到伊甸园区。
  • 4.幸存者区(Survivor Space):用于存储在一次或多次GC后仍然存活的对象,分为两个部分:S0(From Space)和S1(To Space)。
2.2 老年代
  • 1.Old Generation。
  • 2.存储生命周期较长的对象。
  • 3.对象在年轻代经历多次GC后,如果仍然存活,就会被晋升到老年代。
2.3 永久代/元空间
  • 1.PermGen/Metaspace。
  • 2.存储类的元数据、静态变量和常量池。
  • 3.在JDK 8之前使用永久代,JDK 8及以后使用元空间(Metaspace)来取代永久代。
3. 工作原理
  • 1.Minor GC主要通过复制算法来回收内存。
  • 2.标记阶段:从GC Roots开始,标记伊甸园区幸存者区中的所有可达对象。
  • 3.复制阶段:将标记的存活对象从伊甸园区复制到一个幸存者区(如S0),然后交换两个幸存者区的角色(S0和S1)。未被标记的对象则被清理掉。
  • 4.在一次或多次Minor GC后,仍然存活的对象会被移动到老年代,这个过程称为“晋升”(Promotion)。
4. 触发条件
  • 1.Minor GC的触发条件主要是当年轻代内存空间不足时。
  • 2.当伊甸园区满或者幸存者区内存不足以容纳存活对象时,就会触发Minor GC。
  • 3.由于新对象不断创建,Minor GC的发生频率通常较高
5. 影响
  • 1.Minor GC会暂停所有应用线程(Stop-the-World, STW),直到垃圾回收完成。
  • 2.虽然Minor GC的回收时间较短,但频繁的STW事件会影响应用程序的响应速度。
  • 3.通过合理配置年轻代大小和调优Minor GC的频率,可以减少其对应用性能的影响。
6. 优化策略
  • 1.调整年轻代大小:通过设置-Xms(初始堆大小)和-Xmx(最大堆大小)来调整堆的大小,确保年轻代有足够的空间,减少Minor GC的频率。
  • 2.调整年轻代和老年代的比例:通过设置-XX:NewRatio和-XX:SurvivorRatio参数,优化Minor GC和Major GC的频率。
  • 3.使用合适的垃圾收集器:根据应用的特点选择合适的垃圾收集器,如CMS GC或G1 GC,可以减少长时间的STW停顿。
  • 4.优化对象分配策略:减少短生命周期对象的创建,尽量重用对象,避免在年轻代中存放大量短生命周期对象,这会增加Minor GC的压力。

http://www.kler.cn/a/384385.html

相关文章:

  • 云计算答案
  • 将自己的项目打包成一个docker发布
  • 自动驾驶革命:从特斯拉到百度,谁将主宰未来交通?
  • 汽修行业员工培训SOP的智能化搭建
  • 如何选择适合CMS运行的服务器?
  • Linux基础(二):用户管理、文件权限与系统日志
  • 《安富莱嵌入式周报》第345期:开源蓝牙游戏手柄,USB3.0 HUB带电压电流测量,LCR电桥前端模拟,开源微型赛车,RF信号扫描仪,开源无线电收发器
  • BLE 协议之 GATT
  • 【数据集】【YOLO】【目标检测】抽烟识别数据集 6953 张,YOLO/VOC格式标注,吸烟检测!
  • 如何将现有VUE项目所有包更新到最新稳定版
  • 信息安全建设方案,网络安全等保测评方案,等保技术解决方案,等保总体实施方案(Word原件)
  • 解决Postman一直在转圈加载无法打开问题的方法
  • 修改sql server 数据库的排序规则Chinese_PRC_CI_AS(字符集+排序)
  • Redis - 渐进式遍历
  • 03-Dubbo的负载均衡及高性能RPC调用
  • Kafka 源码 KRaft 模式本地运行
  • 读取json文件并解析
  • 【taro react】 ---- 常用自定义 React Hooks 的实现【六】之类渐入动画效果的轮播
  • 初学者指南:用例图——开启您的软件工程之旅
  • 完整版Java类型
  • LInux基础 (一):Linux 系统重要命令拾遗
  • 在本地运行大模型:以Ollama为例
  • 2024最新版JavaScript逆向爬虫教程-------基础篇之Chrome开发者工具学习
  • 架构师:如何提高web网站的请求并发响应量?
  • Python中pandas组件学习总结
  • 【Linux】进程间通信(匿/命名管道、共享内存、消息队列、信号量)