JVM内存模型(堆内与GC)

一、堆与GC的联系.
 

在之前的课程中我们提到堆的概念的频率最高的,其实上堆还可以继续划分为更小的单位,可以划分为新生代(包括了伊甸园区、存活区、伸缩区)、老年代(老年代、伸缩区)、元空间(包括了伸缩区)下面请看图:

那么GC和我们的堆空间存在什么联系呢?为什么堆又被成为GC堆那?其实上我们在创建对象的时候很可能会触发GC线程,下面我们来看看对象创建的过程?

对象的创建会和堆空间发生密切的关系,其中也会在上面的区域触发GC。我们接下来分析GC触发的过程,GC线程会对垃圾进行回收(在对象创建的时候可能会引发GC线程来在堆中回收垃圾)。

对象的创建过程:

当创建一个新对象的时候需要为新对象申请空间,在伊甸园区申请,但是需要判断伊甸园区的空间是否充足,充足则申请成功,如果不充足则触发MinorGC回收不活跃的对象( 不经常使用的对象),回收之后再判断伊甸园区空间是否充足?

  • |-充足则申请成功,对象也创建成功
  • |-如果依然不充足,则判断存活区空间是否充足?
  • |-如果存活区充足则将伊甸园区的部分活跃对象移到存活区,伊甸园的空间申请成功。
  • |-如果存活区的空间不足则判断老年代空间是否充足?
  • 1-充足则将存活区的部分活跃对象移动到老年代,之后将伊甸园区的活跃对象保存到存活区,空间申请成功。
  • |-如果老年代的空间不充足则触发Full GC (MajorGC) 对堆区进行

完全彻底的垃圾回收,之后再判断老年代的空间是否充足,充足则将存活区的活跃对象移到老年代&#x

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值