如何解決JVM空閑堆內存不釋放回OS的問題

今天就跟大家聊聊有關如何解決JVM空閑堆內存不釋放回OS的問題,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

創(chuàng)新互聯于2013年成立,是專業(yè)互聯網技術服務公司,擁有項目網站設計、成都做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元紫金做網站,已為上家服務,為紫金各地企業(yè)和個人服務,聯系電話:13518219792

JDK 8及更早版本

在這些版本中,沒有用于立即回收的顯式選項,但是您可以通過進行設置來使GC一般更具侵略性,該設置-XX:GCTimeRatio=19 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=30將使其在GC后花費更多的CPU時間來收集和限制已分配但未使用的堆內存的數量。循環(huán)。

如果使用并發(fā)收集器,還可以將-XX:InitiatingHeapOccupancyPercent=NN設置為一個較低的值,以使GC幾乎連續(xù)運行并發(fā)收集,這將消耗更多的CPU周期,但會更快地縮小堆。通常這不是一個好主意,但是在某些類型的具有大量備用CPU內核但內存不足的計算機上,這是有道理的。

如果您使用的是G1GC,請注意,它僅使用jdk8u20獲得了在堆中間退還未使用的塊的功能,而早期版本只能在堆末尾返回塊,這對可裝載的塊數量有很大的限制。收回。

如果您使用的收集器具有默認的暫停時間目標(例如CMS或G1),則您也可以放寬該目標,以對收集器施加更少的約束,或者您可以切換并行收集器,以在暫停時間上優(yōu)先考慮占用空間。

為了驗證是否發(fā)生收縮或診斷GC決定不收縮的原因,您可以使用GC Logging-XX:+PrintAdaptiveSizePolicy來提供見解,例如,當JVM嘗試為年輕一代使用更多內存以滿足某些目標時。

JDK 9

添加了-XX:-ShrinkHeapInSteps可用于更積極地應用由上一節(jié)中提到的選項引起的縮小的選項。相關的OpenJDK錯誤。

對于日志記錄-XX:+PrintAdaptiveSizePolicy已被替換為-Xlog:gc+ergo

JDK 12

引入了通過G1PeriodicGCInterval(JEP 346)為G1GC啟用即時內存釋放的選項,但又以一些額外的CPU為代價。JEP還提到了Shenandoah和OpenJ9 VM中的類似功能。

如果您使用G1收集器并偶爾調用System.gc()(我每分鐘執(zhí)行一次),則Java將可靠地收縮堆并將內存返還給OS。

從Java 12開始,如果應用程序處于空閑狀態(tài),則G1會自動執(zhí)行此操作。

我建議將這些選項與以上建議結合使用,以實現非常緊湊的駐留進程大?。?/p>

-XX:+UseG1GC -XX:MaxHeapFreeRatio=30 -XX:MinHeapFreeRatio=10

JDK 13

ZGC在13 Java中發(fā)布,它可以將未使用的堆內存返回給操作系統(tǒng),請參閱鏈接

看完上述內容,你們對如何解決JVM空閑堆內存不釋放回OS的問題有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創(chuàng)新互聯行業(yè)資訊頻道,感謝大家的支持。

當前名稱:如何解決JVM空閑堆內存不釋放回OS的問題
本文來源:http://muchs.cn/article42/jcjghc.html

成都網站建設公司_創(chuàng)新互聯,為您提供網站維護、網站排名、定制開發(fā)搜索引擎優(yōu)化、標簽優(yōu)化、關鍵詞優(yōu)化

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

網站建設網站維護公司