jvm-內存分配策略

內存分配與回收策略:(新生代的GC- minor GC;老年代的GC-full GC或者Major GC)
1.對象優先分配在新生代eden。
當eden區域空間不足的時候會發生一次Minor GC
2.大對象直接進入老年代
需要大量連續空間的對象直接放入老年代,避免Eden去及兩個survivor之間發生大量的內存複製。
3.長期存活的對象將進入老年代。
虛擬機給每個對象定義一個年齡的計數器。如果對象在Eden區出生並經過第一次Minor GC仍然存活
,並且能被Survivor的容納的話。將被移到Survivor並且年齡設爲1.對象在Survivor沒熬過一次Minor
GC年齡就加1,當他的年齡大到一定的程度(15),機會晉升到老年代。
4.動態年齡判斷
虛擬機並不是永遠要求對象的年齡必須達到年齡的限制纔到老年代。如果suivivor空間中相同年齡的的所有
對象大小總和大於suivivor空間的一半,大於等於該年齡的對象就可以直接進入到老年代。
5.空間分配擔保。
在發生Minor GC之前,虛擬機會檢查老年代的可用的連續空間是否大於新生代的所有對象的總空間,如果
條件成立,則Minor GC是安全的。如果不成立,則看是否允許擔保失敗。如果允許那麼繼續檢查老年代的最大
連續空間是否大於晉升到老年代的平均年齡大小,如果大於,則進行Minor GC ,否則改爲一次Full GC。

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