Full GC触发场景及详解

本文详细介绍了Java虚拟机(JVM)中的Full GC(Major GC)触发场景,包括System.gc()调用、老年代空间不足、方法区空间不足以及空间分配担保失败。Full GC并不总是整堆收集,它可能只针对老年代,但在某些情况下涉及整个Java堆和方法区。了解这些机制有助于优化JVM性能。
摘要由CSDN通过智能技术生成

前一阵被同学问到Full GC的触发场景,一时只想到了 “老年代空间不足” 的场景。事后自己检索了一些资料,这边把这个问题整理一下。

Major GC / Full GC

基于分代收集理论,目前的JVM堆内存大多分为了新生代、老年代、方法区。

JVM在进行GC时,并非每次都对上面三个内存区域(新生代、老年代;方法区)一起回收的,大部分时候回收的都是指新生代。

针对Hotspot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)

  • 部分收集:不是完整收集整个Java堆的垃圾收集。其中又分为:

    • 新生代收集(Minor GC / Young GC):只是新生代(Eden,s0,s1)的垃圾收集

    • 老年代收集(Major GC / Old GC):只是老年代的圾收集。

      • 目前,只有CMS GC会有单独收集老年代的行为。

      • 注意,很多时候Major GC会和Full GC混淆使用,需要具体分辨是老年代回收还是整堆回收。

    • 混合收集(Mixed GC)

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值