首頁  >  文章  >  Java  >  Java虛擬機器學習 - 物件記憶體分配與回收

Java虛擬機器學習 - 物件記憶體分配與回收

黄舟
黄舟原創
2017-03-18 17:51:501603瀏覽

物件優先在Eden上分配

大多數情況下,物件優先在新生代Eden區域中分配。當Eden記憶體區域沒有足夠的空間進行分配時,虛擬機器將觸發一次 Minor GC(新生代GC)。 Minor GC期間虛擬機器將Eden區域的物件移動到其中一塊Survivor區域。



大物件直接進入老年代

所謂大物件是指需要大量連續空間的物件。虛擬機器提供了一個XX:PretenureSizeThreshold參數,令大於這個值的物件直接在老年代中分配。

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

虛擬機採用分代收集的思想管理內存,那內存回收時就必須能識別那些對象該放到新生代,那些該到老年代中。為了做到這一點,虛擬機器為每個物件定義了一個物件年齡Age,每經過一次新生代GC後任然存活,將物件的年齡Age增加1歲,當年齡到一定程度(預設為15)時,將會被晉升到老年代中,物件晉升老年代的年齡限定值,可透過-XX:MaxTenuringThreshold來設定。

Minor GC 和Full GC區別

新生代GC(Minor GC):指發生在新生代的垃圾收集動作,因為對像大多都具備朝生夕滅特性,所以Minor GC非常頻繁,回收速度也比較快。

老年代GC(Major GC / Full GC):指發生在老年代中的GC,Major GC出現後,常伴隨至少一次的 Minor GC。 Major GC的速度通常會比Minor GC慢10倍以上。

 以上就是Java虛擬機器學習 -  物件記憶體分配與回收的內容,更多相關內容請關注PHP中文網(www.php.cn)!

相關文章:

Java虛擬機的具體詳情

深入理解Java虛擬機

Java

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn