jvm 《三A》刷新軟引用對(duì)象的原因是什么?

從1.3.1開始,可輕松訪問的對(duì)象在最后一次引用后將保持活動(dòng)一段時(shí)間。默認(rèn)值是堆中每個(gè)可用兆字節(jié)的生命周期的一秒。可以使用-XX:SoftRefLRUPolicyMSPerMB標(biāo)志調(diào)整此值?,該標(biāo)志接受表示毫秒的整數(shù)值。例如,要將值從一秒更改為2.5秒,請(qǐng)使用此標(biāo)志:

-XX:SoftRefLRUPolicyMSPerMB = 2500


Java HotSpot Server VM使用最大可能的堆大?。ㄊ褂?Xmx選項(xiàng)設(shè)置?)來計(jì)算剩余的可用空間。

Java Hotspot Client VM使用當(dāng)前堆大小來計(jì)算可用空間。

這意味著服務(wù)器VM的一般趨勢是增加堆而不是刷新軟引用,?-Xmx因此對(duì)軟引用何時(shí)進(jìn)行垃圾回收具有顯著影響。

另一方面,客戶端VM將更傾向于刷新軟引用而不是增加堆。

上述行為適用于1.3.1到Java SE6版本的Java HotSpot VM。但是,此行為不是VM規(guī)范的一部分,并且在將來的版本中可能會(huì)發(fā)生更改。同樣,-XX:SoftRefLRUPolicyMSPerMB不保證在任何給定版本中都存在該?標(biāo)志。

在1.3.1版之前,Java HotSpot VM在發(fā)現(xiàn)它們時(shí)清除了軟引用。

當(dāng)我定期打開-verbose:gc時(shí),我得到了很多完整的GC,我已經(jīng)調(diào)整了堆,它沒有任何區(qū)別,發(fā)生了什么?

如果您正在使用RMI,那么您可能會(huì)遇到分布式GC。此外,一些應(yīng)用程序正在添加顯式GC認(rèn)為它將使其應(yīng)用程序更快。幸運(yùn)的是,您可以使用1.3及更高版本中的命令行選項(xiàng)禁用此功能。試著?-XX:+DisableExplicitGC 隨著??-verbose:gc,看看是否有所幫助。

---------------------

作者:a_Ygygs_Dxdsr_XdMss

來源:CSDN

原文:https://blog.csdn.net/weixin_42749765/article/details/87450776

版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容