- 參考網址
- 何謂GC回收?
- 分代收集算法
- 根據各區特性使用不同算法
- 特性
- GC次數較頻繁收集於Heap Young區
- GC次數較少收集於Heap Old區
- 基本上不動的收集於Perm區
- Heap Young
- 複製算法( Copying )
- 當Eden內存滿時 , Minor GC清空Eden區 , 將 From區與Eden區存放於To區
- From區與To區的內存不斷進行複製、移動、整理
- 優點 : 內存碎片減少、效率高
- 缺點 : 需要2倍內存空間、
- Heap Old
- 標記清除( Mark-Swap )
- 第一次掃描進行標記
- 第二次掃描進行清除
- 優點 : 不浪費內存空間(不用2倍內存)
- 缺點 : 掃描兩次、產生內存碎片
- 標記壓縮( Mark-Compact )
- 第一次掃描標記
- 第二次掃描移動(壓縮)
- 優點 : 無內存碎片
- 缺點 : 掃描兩次
- 標記清除壓縮( Mark-Swap-Compact )
- Mark-Swap + Mark-Compact
- 多次 Mark-Swap GC之後才做Mark-Compact
- 優點 : 減少移動成本
- 3種垃圾回收方式
- 串行 serial
- 單線呈進行垃圾回收
- 並行
- 多線呈進行垃圾回收, 回收期間暫停程序
- 並發
- 多線呈進行垃圾回收, 回收期間不暫停程序
沒有留言:
張貼留言