文章目录
-
- 分代收集算法
-
-
- 什么是分代
- 分代收集算法-工作机制
- [MinorGC、 Mixed GC 、 FullGC的区别是什么](#MinorGC、 Mixed GC 、 FullGC的区别是什么)
-
分代收集算法
什么是分代
在java8时,堆被分为了两份: 新生代和老年代
【1:2】
其中:
对于新生代 ,内部又被分为了三个区域。
伊甸园区Eden
,新生的对象都分配到这里
幸存者区survivor
(分成from和to)
Eden区,from区,to区【8:1:1】
分代收集算法-工作机制
新
创建的对象
,都会先分配到eden区
当伊甸园内存不足,标记伊甸园
与 from
(现阶段没有)的存活对象
将存活对象采用复制算法复制到 to 中
,复制完毕后,伊甸园和 from 内存都得到释放
经过一段时间后伊甸园的内存又出现不足
,标记eden区域to区存活的对象
,将存活的对象复制到from区
当幸存区对象熬过几次回收(最多15次
),晋升到老年代
(幸存区内存不足
或大对象
会导致提前晋升
)
MinorGC、 Mixed GC 、 FullGC的区别是什么
Minor GC(新生代GC)、Mixed GC(混合GC)和Full GC(完全GC)是垃圾回收
过程中的三个不同阶段
。它们在触发条件
、执行范围
和影响范围
上存在一些区别。
Minor GC
主要针对新生代
进行垃圾回收,
Mixed GC
是对新生代和部分老年代
的垃圾回收,
Full GC
则是对整个堆
内存进行垃圾回收。
随着垃圾回收的范围扩大
,停顿时间
和对应用程序
的影响也会增加。