创建对象在堆区如何分配内存

堆区

Heap堆是垃圾收集器GC(Garbage Collected)管理的主要区域,因此堆区也被称作GC 堆(Garbage Collected Heap)。从垃圾回收的角度,由于现在收集器基本都采用分代垃圾收集算法,所以 JVM中的堆区往往进行分代划分,例如:新生代 和 老年代。目的是更好地回收内存,或者更快地分配内存。

在这里插入图片描述

存储过程

1.产生一个对象,先判断新生代的Eden区是否可以放得下,如果可以放得下,放在新生代区,如果放不下,执行垃圾回收机制(YGC)
2.执行YGC,Eden中的不被引用的会被清理,依然被引用的叫做幸存者,幸存者会判断是否在survivor区放得下,如果可以放得下,放在s0/s1区,并判断对象是否超过阈值15,如果超过晋升为老年代。如果新代放不下,放在老年区。
3.执行结束垃圾回收机制,再判断Eden区是否可以放得下,如果可以放得下,分配内存,如果放不下,判断老年区是否放得下,如果老年区可以放得下,分配内存,执行FGC垃圾回收机制
4.再次判断老年区是否放得下,如果放得下,分配内存,如果放不下,抛出OOM异常

图示过程

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值