第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何釋放Java中的內(nèi)存?

如何釋放Java中的內(nèi)存?

函數(shù)式編程 2019-10-09 17:38:20
有沒有一種類似于C free()函數(shù)的釋放Java內(nèi)存的方法?還是將對象設(shè)置為null并依靠GC是唯一的選擇?
查看完整描述

3 回答

?
梵蒂岡之花

TA貢獻1900條經(jīng)驗 獲得超5個贊

似乎沒有人提到將對象引用顯式設(shè)置為null,這是一種“釋放”您可能要考慮的內(nèi)存的合法技術(shù)。

例如,假設(shè)您List<String>在方法開始時就聲明了a ,該方法的大小會變得非常大,但只需要在方法進行到一半時才需要。此時,您可以將List引用設(shè)置為,null以允許垃圾回收器在方法完成之前可能回收該對象(并且無論如何該引用都超出范圍)。

請注意,實際上我很少使用這種技術(shù),但是在處理非常大的數(shù)據(jù)結(jié)構(gòu)時值得考慮。


查看完整回答
反對 回復(fù) 2019-10-09
?
九州編程

TA貢獻1785條經(jīng)驗 獲得超4個贊

System.gc(); 

運行垃圾收集器。


調(diào)用gc方法表明,Java虛擬機將花費更多精力來回收未使用的對象,以使它們當(dāng)前占用的內(nèi)存可用于快速重用。當(dāng)控件從方法調(diào)用返回時,Java虛擬機將盡最大努力從所有丟棄的對象中回收空間。


不建議。


編輯:我在2009年寫了原始回復(fù)。現(xiàn)在是2015年。


在Java誕生的20多年來,垃圾收集器一直在穩(wěn)步改善。此時,如果您要手動調(diào)用垃圾收集器,則可能需要考慮其他方法:


如果你強迫機器上數(shù)量有限GC,它可能是值得擁有的負載均衡點遠從目前的機器,等待它完成投放到連接的客戶端,超時一段時間后懸掛的連接,然后就硬-重新啟動JVM。這是一個糟糕的解決方案,但是如果您正在查看System.gc(),則強制重啟可能是一個權(quán)宜之計。

考慮使用其他垃圾收集器。例如,(過去六年中的新產(chǎn)品)G1收集器是一種低暫停時間模型;它總體上使用更多的CPU,但最好不要強迫執(zhí)行硬停止。由于服務(wù)器CPU現(xiàn)在幾乎都具有多個內(nèi)核,因此這是一個非常不錯的選擇。

查看調(diào)整內(nèi)存使用情況的標志。尤其是在Java的較新版本中,如果沒有那么多長期運行的對象,請考慮增加堆中newgen的大小。newgen(年輕)是分配新對象的位置。對于Web服務(wù)器,為請求創(chuàng)建的所有內(nèi)容都放在此處,如果此空間太小,Java將花費額外的時間將對象升級到壽命更長的內(nèi)存,在這些內(nèi)存中銷毀它們的代價更高。(如果newgen太小,您將為此付出代價。)例如,在G1中:

XX:G1NewSizePercent(默認為5;可能沒有關(guān)系。)

XX:G1MaxNewSizePercent(默認為60;可能會提高它。)

考慮告訴垃圾收集器您暫停較長時間后還不滿意。這將導(dǎo)致更頻繁的GC運行,以使系統(tǒng)保持其余約束。在G1中:

XX:MaxGCPauseMillis(默認為200。)


查看完整回答
反對 回復(fù) 2019-10-09
  • 3 回答
  • 0 關(guān)注
  • 1976 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號