1. 程式人生 > >JVM堆分代

JVM堆分代

1、java虛擬機器根據物件存活的週期不同,將堆記憶體分為:

新生代(Young Generation )、老年代(Old Generation)、永久代(Permanent Generation)

2、為什麼分代?

給堆記憶體分代是為了提高物件記憶體分配和垃圾回收的效率

新建立的物件會在新生代中分配記憶體,經過多次回收仍然存活下來的物件存放在老年代中,靜態屬性、類資訊等存放在永久代中。

根據不同年代的特點採用合適的垃圾收集演算法。

新生代和老年代是垃圾回收的主要區域。

新生代:伊甸園(嬰兒的搖籃)、倖存者           【8:1:1】

伊甸園的閥值為15.

設定這個比例是為了充分利用空間,減少浪費。

老年代:在新生代中經歷多次,仍然存活下來的物件進入老年代。

永久代:儲存類資訊、常量、靜態變數、即時編譯器後的程式碼等資料,一般而言不會進行垃圾回收。(1.7後沒有這一說法)