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

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

本文介绍Java堆内存管理机制,包括新生代与老年代的概念及如何通过分代垃圾收集算法进行内存回收。阐述了对象在堆内存中的分配过程,以及触发不同垃圾回收机制的条件。

1206

被折叠的 条评论
为什么被折叠?



