溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java對象中新生代進入老年代的方式有哪些

發(fā)布時間:2021-09-14 09:34:24 來源:億速云 閱讀:180 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關Java對象中新生代進入老年代的方式有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

  1. 大對象直接進入年老代

    • 大對象即需要大量連續(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)存)。

  2. 長期存活的對象將進入年老代

    • 虛擬機給每個對象定義了一個對象年齡計數(shù)器,在對象在Eden創(chuàng)建并經(jīng)過第一次Minor GC后仍然存活,并能被Suivivor容納的話,將會被移動到Survivor空間,并對象年齡設置為1。每經(jīng)歷過Minor GC,年齡就增加1歲,當?shù)揭欢ǔ潭龋J15歲,可以通過參數(shù)-XXMaxTenuringThreshold設置),就將會晉升年老代。

  3. 動態(tài)對象年齡判定

    • 為了更好地適應不同程序內(nèi)存狀況,虛擬機并不硬性要求對象年齡達到MaxTenuringThreshold才能晉升老年代,如果在Survivor空間中相同年齡所有對象大小的總和大于Survivor空間的一半,年齡大于或等于該年齡的對象就可以直接進入年老代

看完上述內(nèi)容,你們對Java對象中新生代進入老年代的方式有哪些有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI