Java記憶體分配

2021-07-05 04:56:38 字數 429 閱讀 6518

大多數情況,物件在新生代eden區中分配。當eden去沒有足夠記憶體空間分配時,進行minor gc。

大物件是指連續占用記憶體空間的物件,比如很長的字串以及陣列。

用乙個年齡計數器,每次minor gc後存活的物件移動到survior空間,並且計數器加1.年齡計數器大於一定值(預設是15),將晉公升到老年代.可以用-xx:maxtenuringthreshold設定閥值.

如果在survivor空間中的相同年齡所有物件大小的總和大於survivor空間的一半,年齡大於或等於該年齡的物件就可以直接進入老年代,無須等到maxtenuringthreshold中要求的年齡。

在minor gc前,虛擬機會檢查老年代的最大連續空間是否大小新生代所有物件總空間。如果這個成立,minor gc是安全的;否則會根據handlepromotionfailure設定,擔保是否進行minor gc。

JAVA類記憶體分配

1 成員變數和區域性變數的區別 理解 1 在類中的位置不同 成員變數 類中方法外 區域性變數 方法定義中或者方法宣告上 2 在記憶體中的位置不同 成員變數 在堆中 區域性變數 在棧中 3 生命週期不同 成員變數 隨著物件的建立而存在,隨著物件的消失而消失 區域性變數 隨著方法的呼叫而存在,隨著方法的...

JAVA記憶體分配規則

物件分配規則 1.物件優先分配在eden 區,如果 eden 區沒有足夠的空間時,虛擬機器執行一次 minor gc。2.大物件直接進入老年代 大物件是指需要大量連續記憶體空間的物件 這樣做的目的是避免在eden 區和兩個 survivor 區之間發生大量的記憶體拷貝 新生代採用複製演算法收集記憶體...

java的記憶體分配方法

記憶體分配方法主要可以分為 堆 heap 靜態區域 由static修飾 棧 stack 常量池 其中,堆和常量池主要存放 右邊的 值 而棧和靜態區域則主要存放 左邊的變數 名 或者引用 名 舉幾個栗子 1 string str abc static int a 10 str stack 因為是 變數...