《JVM掘坟笔记之基于UseSerialGC的年轻代老年代垃圾回收证明》

背景

一般遇到关于创建对象时内存不足的时候会爆出堆内存不足的情况,为了研究怎么合理避免这种情况的发生有必要了解下关于堆空间里年轻代和老年代的垃圾回收触发机制以及存放机制。那么下面就简单介绍下了。类似沟~
在这里插入图片描述

关于垃圾回收机制

说到垃圾回收,在内存不足的时候,JVM首先肯定不是直接把堆内存的eden区域直接清空或者其他内存不足的地方清空,这种操作没有道理。如果真的这样想那还有什么安全性可言。那么内心就这样了:
在这里插入图片描述
正常的JVM会启动自我检查会触发以下两种算法:

  1. 引用计数法
  2. 可达性算法

总而言之,会先标记好那些对象已经没有强引用之类的,然后根据情况进行不同的垃圾回收新生代一般会触发的是MinorGC基于复制算法的回收算法,例如下面的情况:
在这里插入图片描述

新生代的第一次MinorGC处理流程:

  1. 新生成对象的时候发现内存不够了
  2. 分析算法:
    引用计数法和可达性算法进行分析寻找进行标记动作
  3. 迁移幸存区:
    把存活的对象复制到幸存区,并且寿命加一。
  4. Minor GC后幸存区From和To互换

当再次内存满了之后,第二次Minor GC

  1. 先清空未引用的对象,包括幸存区的,如果有引用存入到幸存区,原来在幸存区仍然存活的对象再加一。
  2. 当寿命超过默认值的话就放到了老年代

注意:当新生代内存肯定不够的时候&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值