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

【jvm】Major GC

目录

          • 1. 说明
          • 2. 触发条件
          • 3. 执行过程
          • 4. 与Minor GC和Full GC的关系
            • 4.1 Minor GC
            • 4.1 Full GC
          • 5. 优化建议

1. 说明
  • 1.Major GC,即老年代GC,指的是发生在老年代(Old Generation或Tenured Generation)的垃圾回收过程。
  • 2.Major即主要的。
2. 触发条件
  • 1.Major GC的主要触发条件是老年代空间不足
  • 2.存活对象从年轻代(Young Generation)晋升到老年代,导致老年代空间不足。
  • 3.应用程序创建了大量大对象,这些对象直接进入老年代,占用了大量空间。
  • 4.在Java 8及之前的版本中,如果永久代(PermGen)空间不足,也可能触发Major GC(尽管这更多与Full GC相关,但在某些情况下可能涉及老年代的回收)。
  • 5.在Java 8及之后的版本中,永久代被元空间(Metaspace)取代,因此这一触发条件不再适用。
3. 执行过程
  • 1.标记阶段:遍历堆内存中的对象,标记出存活的对象。
  • 2.整理阶段:根据标记结果,移动存活对象以减少碎片化,并释放不再需要的对象所占用的空间。
  • 3.这个过程可能导致较长的停顿时间,因为需要整理老年代的内存并移动对象。
  • 4.Major GC的执行速度通常比Minor GC慢得多。
4. 与Minor GC和Full GC的关系
4.1 Minor GC
  • 1.主要关注清理年轻代的内存区域。
  • 2.当年轻代中的Eden区或Survivor区满时,会触发Minor GC。
  • 3.Minor GC通常发生频繁,但停顿时间相对较短。
4.1 Full GC
  • 1.是对整个堆内存(包括年轻代、老年代、永久代或Metaspace等)进行清理的一种垃圾回收操作。
  • 2.Full GC的触发条件可能包括老年代空间不足、永久代/Metaspace空间不足或显式调用System.gc()等。
  • 3.Full GC的执行会导致相对较长的停顿时间,因为它需要对整个堆内存进行回收。
  • 4.很多时候Major GC会和Full GC混淆使用。
  • 5.Major GC主要关注老年代的垃圾回收,而Full GC则是对整个堆内存的完全清理。
  • 6.在某些情况下,如CMS并发清理过程中出现“并发分配错误”时,会触发对所有堆空间进行回收的Full GC。
5. 优化建议
  • 1.为了减少Major GC的频率和停顿时间。
  • 2.调整堆内存大小:根据应用程序的需求调整堆内存的大小,以确保有足够的空间容纳存活对象。
  • 3.优化对象晋升策略:通过调整年轻代和老年代的比例、设置晋升阈值等方式来优化对象的晋升策略。
  • 4.使用更高效的垃圾回收器:根据应用程序的特点选择合适的垃圾回收器,如G1 GC、ZGC等,这些回收器在性能和停顿时间方面通常优于传统的Serial和Parallel GC。

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

相关文章:

  • (3)STM32 USB设备开发-USB存储设备
  • 网络通信---MCU移植LWIP
  • 路径规划之启发式算法之二十八:候鸟优化算法(Migrating Birds Optimization, MBO)
  • github汉化
  • 【NLP基础】Word2Vec 中 CBOW 指什么?
  • 数学基础 --线性代数之理解矩阵乘法
  • 基于SpringBoot的视频点播系统设计与实现
  • 【计算机基础——操作系统——Linux】
  • Cuebric:用AI重新定义3D创作的未来
  • 两道算法题
  • Unreal5从入门到精通之如何在VR中使用3DUI
  • 【SpringMVC】传递json,获取url参数,上传文件
  • Redis-结构化value对象的类型
  • GBDT算法Python代码实现
  • HTML5和CSS3 介绍
  • 加强版 第六节 图像轮廓几何属性分析
  • 无人机维修培训班开班课程技术详解
  • 「Mac畅玩鸿蒙与硬件17」鸿蒙UI组件篇7 - Animation 组件基础
  • npm入门教程17:准备发布的npm包
  • 家具制造的效率与美观并重,玛哈特矫平机让家具产品更具竞争力。
  • 2024前端面试训练计划-高频题-网络基础篇
  • QT中TextEdit或者QLineEdit以十六进制显示数组数据
  • uni-app 下拉刷新、 上拉触底(列表信息)、 上滑加载(短视频) 一键搞定
  • nginx配置转发到elk的kibana的服务器
  • 【开发工具——依赖管理工具——Maven】
  • unity c# Tcp网络通讯