JAVA 複習(二)

內存區域

PC指針

方法區

堆 分爲新生代,老年代,

 

方法區、永久代、Meta空間的說明:

https://www.cnblogs.com/chengpeng15/p/9850690.html

內存回收及內存分配

 

新生代 採用複製算法進行垃圾回收  Minor GC  速度快

老年代 採用標記整理(清理)進行垃圾回收 Major/Full GC  速度可能是 Minor GC 的10倍

對象內存分配

對象優先考慮在Eden 區域分配內存,Eden空間不足時促發一次Minor GC,爲新對象騰出空間,GC過程中對象可能被移到Survivor區,如果Survivor無法容納,則移到老年代。

-XX:PretenureSizeThreshold 參數,大於這個設置值的對象直接在老年代分配。

-XX:MaxTenuringThreshold參數,晉升老年代年齡閾值,每一次Minor GC,Survivor中的對象年齡加1.超過閾值後移到老年代。

除了超年齡晉升,JVM也有其它策略來讓對象晉升到老年代:某年齡的對象的總大小大於Survivor/2 的大小時,大於等於這個年齡的對象全部晉升。

FULL GC觸發的一個時機:

Minnor GC 前,JVM 檢測老年代是否有空間容納新生代的所有對象,如果沒有,那麼就可能觸發一次FULL GC,在老年代騰出空間來容納Minor GC 可能代來的 晉升行爲。是否FULL GC有若干的判斷條件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章