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