場景來源
客戶現場有一套重要的業務系統,供業務同事進行使用,但是每連續運行10天都會出現問題,會造成程序慢響應,無響應情況,嚴重影響消費者、使用者的使用體驗,經常得到業務同事反饋,所以配合研發對該問題進行查詢。
該系統硬件服務器性能足夠,但每個重啟周期內內存都是緩慢上升,觀察JVM使用率、系統內存使用率等均是持續上升,未發現有主動進行內存回收,初步懷疑為內存泄漏導致。
初識JVM虛擬機
JVM虛擬機的結構
Java虛擬機主要分為五大模塊:
常見的內存溢出
現象一:
java.lang.OutOfMemoryError: Java heap space
代碼中可能存在大對象分配。
可能存在內存泄露,導致在多次GC之后,還是無法找到一塊足夠大的內存容納當前對象。
檢查是否存在大對象的分配,最有可能的是大數組分配。
如果沒有找到明顯的內存泄露,可以臨時 -Xmx 加大堆內存。
還有一點容易被忽略,檢查是否有大量的自定義的 Finalizable 對象,也有可能是框架內部提供的,考慮其存在的必要性。
現象二:
java.lang.OutOfMemoryError: PermGen
spacejava.lang.OutOfMemoryError: Metaspace
在Java7之前,頻繁的錯誤使用String.intern()方法 。
運行期間生成了大量的代理類,導致方法區被撐爆,無法卸載 。
應用長時間運行,沒有重啟。
檢查是否永久代空間或者元空間設置的過小。
檢查代碼中是否存在大量的反射操作 。
dump之后通過mat檢查是否存在大量由于反射生成的代理類。
現象三:
java.lang.OutOfMemoryError:GC overhead limit exceeded
檢查項目中是否有大量的死循環或有使用大內存的代碼,優化代碼。
添加參數 -XX:-UseGCOverheadLimit 禁用這個檢查,其實這個參數解決不了內存問題,只是把錯誤的信息延后,最終出現 java.lang.OutOfMemoryError: Java heap space。
現象四:
java.lang.OutOfMemoryError : unable to create new native Thread
出現這種異常,基本上都是創建的了大量的線程導致的,以前碰到過一次,通過jstack出來一共8000多個線程。
通過 -Xss 降低的每個線程棧大小的容量。
線程總數也受到系統空閑內存和操作系統的限制,檢查是否該系統下有此限制:
/proc/sys/kernel/pid_max
/proc/sys/kernel/thread-max
maxuserprocess(ulimit -u)
/proc/sys/vm/maxmapcount
java.lang.OutOfMemoryError: Requested array size exceeds VM limit
java.lang.OutOfMemoryError: Out of swap space
swap 分區大小分配不足。
其他進程消耗了所有的內存。
其它服務進程可以選擇性的拆分出去 。
加大swap分區大小,或者加大機器內存大小。
緊急處理方法
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129551.html
摘要:內存溢出分配的內存空間超過系統內存。內存泄漏的原因分析由大塊組成堆,棧,本地方法棧,程序計數器,方法區。內存溢出的原因分析內存溢出是由于沒被引用的對象垃圾過多造成沒有及時回收,造成的內存溢出。小結棧內存溢出程序所要求的棧深度過大導致。 showImg(https://segmentfault.com/img/bVbweuq?w=563&h=300); 前言:JVM中除了程序計數器,其他...
摘要:那就只能是處理的數據超過了堆區內存上限,按照這個猜測往下分析。主要暴增對象如上圖框出來的地方。符合對象內存一篇文中分析的字節大小。優化自己的程序,使其在運行過程中占用內存盡可能的少。針對異常的具體優化措施。 前言 在正式開始講解關于OutOfMemoryError錯誤之前先來了解下,我在遇到這個異常的背景。 對數據充滿敬畏之心 我需要對hive中的數據進行批量操作處理,對于沒有了解過h...
摘要:本文詳細描述了堆內存模型,垃圾回收算法以及處理內存泄露的最佳方案,并輔之以圖表,希望能對理解內存結構有所幫助。該區域也稱為內存模型的本地區。在中,內存泄露是指對象已不再使用,但垃圾回收未能將他們視做不使用對象予以回收。 本文詳細描述了 Java 堆內存模型,垃圾回收算法以及處理內存泄露的最佳方案,并輔之以圖表,希望能對理解 Java 內存結構有所幫助。原文作者 Sumith Puri,...
閱讀 1347·2023-01-11 13:20
閱讀 1686·2023-01-11 13:20
閱讀 1133·2023-01-11 13:20
閱讀 1860·2023-01-11 13:20
閱讀 4103·2023-01-11 13:20
閱讀 2705·2023-01-11 13:20
閱讀 1386·2023-01-11 13:20
閱讀 3599·2023-01-11 13:20