JVM-垃圾收集算法

 

新生代:複製算法,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區,

老年代做爲擔保;

相關文章
相關標籤/搜索