對象的內存分配主要是在堆上分配。根據(jù)具體的java虛擬機和相關的配置的不同,可能會存在一定的差異,不過大體上主要如下的幾個規(guī)則:
1、對象會優(yōu)先在Eden上分配
對象在一般情況上大多數(shù)會在新生代的Eden上分配內存,當內存不足時,虛擬機會發(fā)起一次MinorGC。
2、大對象會直接進入老年代
這里的大對象是指那些需要大量連接的內存空間的對象,例如:那些很長的字符串和數(shù)組。
3、長時間存活的對象會進入到老年代
一般來說,對象在Eden出生并且經(jīng)歷一次MinorGC,而已能survivor空間中,就對象年齡+ 1,當年齡大于閾值時,就會進入到老年代。其中閾值有一個默認值,也可以通過配置來設定。