004. 深入JVM学习—Java垃圾回收流程

1. GC处理流程图


GC处理流程图

  • 整个GC流程中,最需要处理的是年轻代和老年代内存的清理操作,而元空间(永久带)都不在GC范围内。
  1. 当有一个新对象产生,需要分配空间;

  2. 首先会判断伊甸园区是否有内存空间,如果有内存空间,则直接将新对象保存在伊甸园区;

  3. 如果伊甸园区内存空间不足,会自动执行Minor GC操作,将伊甸园区无用的内存空间进行清理;清理之后会判断伊甸园区的内存空间是否充足?如果内存空间充足则将新的对象在伊甸园区进行分配;

  4. 如果执行了Minor GC操作,发现伊甸园区内存依然不足,那么会判断存活区,如果存活区有内存空间,那么会把伊甸园区的部分活跃对象保存到存活区,随后继续判断伊甸园区的空间是否充足,如果充足,则在伊甸园区进行新对象内存空间的分配;

  5. 如果此时存活区也已没有内存空间,那么判断老年区,如果此时老年区空间充足,则将存活区中的活跃对象保存到老年区,而后存活区就会出现空余空间,而后伊甸园区将活跃对象保存在存活区之中,而后在伊甸园区中为新对象开辟空间;

  6. 如果此时老年代也是满的,此时将产生Major GC(Full GC),进行老年代的内存清理;

  7. 如果老年代执行了Full GC之后,发现依然无法实现对象的保存,就会产生OOM异常(OutOf MemoryError)。

转载于:https://my.oschina.net/shadowolf/blog/1833986

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值