Minor GC和Full GC的触发时机

本文介绍了Java虚拟机中的垃圾收集过程,分为MinorGC(年轻代回收)和FullGC(全堆回收)。MinorGC在年轻代满时触发,保持空间利用率;FullGC在老年代空间不足或元空间碎片严重时执行,开销较大。GC时机由JVM动态决定,以优化内存管理。
摘要由CSDN通过智能技术生成

在Java虚拟机(JVM)中,垃圾收集(Garbage Collection)的过程分为两种主要类型:Minor GC和Full GC。

  1. Minor GC

    • 触发时机:当新对象创建并且堆内存中的Eden区域满了时,会触发Minor GC。Minor GC主要针对年轻代(Young Generation)进行垃圾回收,包括Eden区和两个Survivor区。在Minor GC过程中,存活的对象会被移动到Survivor区,而无用的对象会被回收。
    • 原因:Minor GC的目的是尽快回收那些“朝生夕灭”的对象,保持年轻代的空间能够被重复利用,减少对老年代的压力,从而延长Full GC的触发间隔。
  2. Full GC

    • 触发时机:Full GC会对整个堆内存(包括年轻代和老年代)进行垃圾回收,触发的时机相对较少,通常在老年代空间不足、永久代(在Java 8之前)或元空间(在Java 8及以后)不足、内存碎片严重等情况下才会触发。Full GC的开销通常比Minor GC大,因为它需要扫描整个堆内存。
    • 原因:Full GC的目的是对整个堆内存进行垃圾回收,包括老年代中存活的对象,以及清理无用的软引用、弱引用等。

触发GC的时机并不是固定的,而是由JVM根据当前堆内存的使用情况、对象的存活情况以及GC算法等因素动态决定的。通常来说,Minor GC的频率会比Full GC高,因为它只对年轻代进行回收,而Full GC则会耗费更多的时间和资源。

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值