新生代:複製算法,IBM研究過,約98%對象是「朝生夕死」,因此不須要按照1:1來劃分;HotSpot中默認是8:1:1,即每次新生代可用空間爲90%,只有10%會被「浪費」,算法
當Survivor空間不夠時,須要依賴老年代進行分配擔保。spa
1.標記-清除算法(Mark-Sweep) | 2.複製算法(Copying) | 3.標記-整理算法(Mark-Compact) | 4.分代收集算法(Generational Collection) | |
簡介 | 最基礎 | 爲解決1的效率問題; |
|
|
實現方案 | 將內存分爲相等的2個部分,3d 當1塊用完後,將存活對象複製到另1塊上,對象 而後一次清理掉已用那塊;blog |
先標記,內存 再讓全部存活的對象都向一端移動,ci 清除掉端邊界之外的內存;io |
新生代:對象存活率低,有老年代做爲擔保;table -->複製算法效率 老年代:對象存活率高,無額外空間擔保; -->標記-清除、標記-整理孫 |
|
優勢 | 當對象存活率很低,約10%之內,效率高 | |||
缺點 | 1.效率問題,標記和清除兩個過程效率都不高; 2.空間問題,產生內存碎片,可能會影響大對象的分配,致使提早觸發GC; |
1.將內存縮小爲原來的一半; 2.當對象存活率較高時,就要進行較多的複製操做,效率變低; |
||
適用領域 | 多用於新生代, 將Eden和From區存活對象移動到To區, 而後清除Eden和From區, 老年代做爲擔保; |