您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Java對象中新生代進入老年代的方式有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
大對象直接進入年老代
大對象即需要大量連續(xù)內(nèi)存空間的Java對象,如長字符串及數(shù)組。經(jīng)常出現(xiàn)大對象導致內(nèi)存還有不少空間時就提前觸發(fā)垃圾收集以獲取足夠的連續(xù)空間來安置他們。
虛擬機提供了一個-XX:PretenureSizeThreshold參數(shù),令大于這個設置值的對象直接在老年代分配。 這樣做的目的是避免在Eden區(qū)及兩個Survivor區(qū)之間發(fā)生大量的內(nèi)存復制(新生代采用復制算法收集內(nèi)存)。
長期存活的對象將進入年老代
虛擬機給每個對象定義了一個對象年齡計數(shù)器,在對象在Eden創(chuàng)建并經(jīng)過第一次Minor GC后仍然存活,并能被Suivivor容納的話,將會被移動到Survivor空間,并對象年齡設置為1。每經(jīng)歷過Minor GC,年齡就增加1歲,當?shù)揭欢ǔ潭龋J15歲,可以通過參數(shù)-XXMaxTenuringThreshold設置),就將會晉升年老代。
動態(tài)對象年齡判定
為了更好地適應不同程序內(nèi)存狀況,虛擬機并不硬性要求對象年齡達到MaxTenuringThreshold才能晉升老年代,如果在Survivor空間中相同年齡所有對象大小的總和大于Survivor空間的一半,年齡大于或等于該年齡的對象就可以直接進入年老代
看完上述內(nèi)容,你們對Java對象中新生代進入老年代的方式有哪些有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。