常見OOM問題之Out of swap space交換空間不足問題詳解

本文來自于HeapDump性能社區(qū)! !有性能問題,上HeapDump性能社區(qū)!
正文:

Java 應(yīng)用程序在啟動期間獲得的內(nèi)存量有限。此限制是通過 -Xmx 和其他類似的啟動參數(shù)指定的。在 JVM 請求的總內(nèi)存大于可用物理內(nèi)存的情況下,操作系統(tǒng)開始將內(nèi)容從內(nèi)存換出到硬盤。

v2-f6e98a6eacd721d4ca5c2d5a6a96f9c5_1440w.png

java.lang.OutOfMemoryError:交換空間?error 表示交換空間也用完了,新的嘗試分配由于物理內(nèi)存和交換空間都不足而失敗。

1,是什么原因造成的?

java.lang.OutOfmemoryError:交換空間?當(dāng)來自本機堆的字節(jié)分配請求失敗并且本機堆接近耗盡時,JVM 會拋出 . 該消息指示失敗的分配的大小(以字節(jié)為單位)以及內(nèi)存請求的原因。

問題出現(xiàn)在Java進程已經(jīng)開始交換的情況下,回顧Java是一種垃圾收集語言已經(jīng)不是一個好的情況。現(xiàn)代GC 算法做得很好,但是當(dāng)遇到由交換引起的延遲問題時,GC 暫停往往會增加到大多數(shù)應(yīng)用程序無法容忍的水平。

java.lang.OutOfMemoryError:交換空間不足?通常是由操作系統(tǒng)級別的問題引起的,例如:

  • 操作系統(tǒng)配置的交換空間不足。
  • 系統(tǒng)上的另一個進程正在消耗所有內(nèi)存資源。

應(yīng)用程序也可能由于本機泄漏而失敗,例如,如果應(yīng)用程序或庫代碼連續(xù)分配內(nèi)存但未將其釋放給操作系統(tǒng)。

2,解決辦法是什么?

要克服這個問題,您有幾種可能性。首先也是最簡單的解決方法是增加交換空間。實現(xiàn)此目的的方法是特定于平臺的,例如在 Linux 中,您可以使用以下示例命令序列來實現(xiàn),這些命令創(chuàng)建并附加一個大小為 640MB 的新交換文件:

swapoff -a 
dd if=/dev/zero of=swapfile bs=1024 count=655360
mkswap swapfile
swapon swapfile

現(xiàn)在,您應(yīng)該回想一下,由于垃圾收集會清除內(nèi)存內(nèi)容,因此通常 Java 進程不希望交換。在交換分配上運行垃圾收集算法可以將GC 暫停的長度增加幾個數(shù)量級,因此在跳到簡單的解決方案潮流之前應(yīng)該三思而后行。

如果您的應(yīng)用程序部署在 JVM 需要與之競爭資源的“嘈雜鄰居”旁邊,您應(yīng)該將服務(wù)隔離到單獨的(虛擬)機器上。

在許多情況下,您唯一真正可行的選擇是升級機器以包含更多內(nèi)存或優(yōu)化應(yīng)用程序以減少其內(nèi)存占用。當(dāng)您轉(zhuǎn)向優(yōu)化路徑時,一個好的開始方法是使用內(nèi)存轉(zhuǎn)儲分析器來檢測內(nèi)存中的大量分配。

Java OOM系列專題:

第一篇:Java OOM 原理篇 : 什么是 Java OOM

第二篇:Java OOM 基礎(chǔ)篇:常見的OutOfMemoryError 場景一:Java heap space 堆溢出問題詳解

第三篇:Java OOM 基礎(chǔ)篇:常見的OutOfMemoryError 場景二 : GC overhead limit exceeded 問題詳解

第四篇:Java OOM 基礎(chǔ)篇:常見的OutOfMemoryError 場景三: PermGen space 永久空間問題詳解

第五篇:Java OOM 基礎(chǔ)篇:常見的OutOfMemoryError 場景四: Permgen size 元空間問題詳解

第六篇:Java OOM 實戰(zhàn)篇:應(yīng)用故障之Java heap space 堆溢出實戰(zhàn)

第七篇:Java OOM 高級篇:體驗了一把線上CPU100%及應(yīng)用OOM的排查和解決過程

第八篇:Java OOM 高級篇:線上Docker 上Springboot程序OOM問題的排查分享

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容