JVM-內存分配與回收策略

內存分配與回收策略:

1.對象優先在eden分配

2.大對象直接進入老年代

大對象指的是需要大量連續內存空間的java對象,最典型的大對象就是那種很長的字符串以及數組。

大對象容易導致內存還有不少空間時就提前觸發垃圾收集以獲取足夠的連續空間來“安置”它們。

爲此虛擬機提供了一個參數PretenureSizeThreshold,令大於這個設置值得對象直接進入老年代。

(避免大量的內存複製,因爲新生代採用複製算法收集內存)

3.長期存活的對象將進入老年代

爲了能識別新生代,老年代。給對象定義了一個對象年齡計數器。對象在Survivor區中每"熬過"一次

Minor GC,年齡就加1,當到一定年齡(閾值:默認15),就將晉升爲老年代。對象晉升老年代的閾值,可以

通過MaxTenuringThreshold設置。

4.動態對象年齡判定

爲了更好適應不同程序的內存狀況,虛擬機並不是要求對象的年齡必須達到閾值才能晉升老年代。

如果在Survivor區中相同年齡所有對象大小的總和大於Survivor空間的一半,年齡大於或等於該年齡的

對象就可以直接進入老年代,無須等到閾值年齡。

5.空間分配擔保

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