深刻理解Java虛擬機(2)

一、GC過程

二、對象已死判斷算法

  

三、對象的引用:

 

四、垃圾收集算法

補充堆中區域劃分算法

五、垃圾收集器

Parallel Scavenge:吞吐量優先收集器,與ParNew區別在於多了自適應調節策略併發

CMS:以獲取最短回收停頓時間爲目標的收集器,是基於標記-清除算法實現的收集器。spa

 

補充兩個概念:線程

並行(Parallel):指多個垃圾收集線程工做、但此時用戶線程仍然處於等待狀態。對象

併發(ConCurrent):指用戶線程與垃圾收集線程同時執行。內存

 

六、內存分配過程

通常過程:io

一、TLAB((Thread Local Allocation Buffer))引用

二、優先堆新生代eden區並行

三、大對象進入堆老年代自適應

四、新生代GC(Minor GC)發生,存活對象則優先新生代Survivor區,若存活對象大於Survivor區,則經過擔保機制進入老年代。

 

1)默認新生代Eden、Survivor比例是多少?

-8:1,整個新生代包括Eden區和2個Survivor區,也就是若是新生代共10M,則Eden分配8M,2個Survivor各爲1M。

-XX:SurvivorRatio=8設置比例值。

 

2)新生代GC和老年代GC的有啥不同?

-新生代GC發生頻繁,速度快

-新生代GC採用複製算法,老年代GC採用標記整理算法

 

3)新生代Survivor區的對象如何進入老年代?

-Survivor存活年齡(新生代GC一次,年齡+1)大於MaxTenuringThreshold值。

-相同年齡的對象之和大於Survivor大小的一半

相關文章
相關標籤/搜索