文章目錄
- 分代收集算法
- 什么是分代
- 分代收集算法-工作機制
- 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
則是對整個堆
內存進行垃圾回收。
隨著垃圾回收的范圍擴大
,停頓時間
和對應用程序
的影響也會增加。