OOM排查

可能原因:

(1)內(nèi)存確實分配過小毕骡,內(nèi)存確實不夠用削饵;

(2)某一個對象被頻繁申請,卻沒有釋放挺峡,內(nèi)存不斷泄漏葵孤,導(dǎo)致內(nèi)存耗盡;

(3)某一個資源被頻繁申請橱赠,系統(tǒng)資源耗盡尤仍,例如:不斷創(chuàng)建線程,不斷發(fā)起網(wǎng)絡(luò)連接狭姨;

排查方法:

一宰啦、確認(rèn)是不是內(nèi)存本身就分配過小方法:jmap?-heap + PID

二苏遥、找到最耗內(nèi)存的對象方法:jmap?-histo:live PID | more

會打印(1)實例數(shù)赡模;(2)所占內(nèi)存大刑锾俊;(3)類名漓柑;

三教硫、確認(rèn)是否是資源耗盡工具:(1)pstree(2)netstat

OOM排查? 詳細(xì)帖子

具體操作:

1、先查看應(yīng)用進(jìn)程號pid: ps ?-ef | grep ?應(yīng)用名(或者jps命令也可以看到PID)

2辆布、查看pid垃圾回收情況:??jstat ?-gc ?pid ?5000(時間間隔)

3瞬矩、開啟OOM快照:

-XX:+HeapDumpOnOutOfMemoryError(開啟堆快照)

-XX:HeapDumpPath=C:/m.hprof(保存文件到哪個目錄)

4、dump 查看方法棧信息:

jstack -l? pid? >? /home/test/jstack.txt

5锋玲、dump 查看JVM內(nèi)存分配以及使用情況

jmap? -heap? pid? >? /home/test/jmapHeap.txt

6景用、dump jvm二進(jìn)制的內(nèi)存詳細(xì)使用情況 (效果同在Tomcat的catalina.sh中添加 set JAVA_OPTS=%JAVA_OPTS% -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/test//oom.hprof? 此文件需要借用內(nèi)存分析工具如:Memory Analyzer (MAT)來分析)

jmap -dump:format=b,file=/home/test/oom.hprof? pid

OOM一般有以下兩種情況:

1、年老代堆空間被占滿

異常:java.lang.OutOfMemoryError:java? heap space

說明:這是最典型的內(nèi)存泄漏方式惭蹂,簡單說就是所有堆空間都被無法回收的垃圾對象占滿伞插,虛擬機(jī)再也無法分配新空間

解決方案:這種方式解決起來比較簡單,一般就是根據(jù)垃圾回收前后的情況對比盾碗,同時根據(jù)對象引用情況(常見的集合對象引用)分析媚污,基本都可以找到泄漏點(diǎn)。

2置尔、持久代被占滿

異常:java.lang.OutOfMemoryError:PermGen space

說明:Perm 空間被占滿杠步,無法為新的 class 分配存儲空間而引發(fā)的異常氢伟。這個異常以前是沒有的榜轿,但是在 java 大量使用反射的今天這個異常就比較常見了。主要原因是大量動態(tài)反射生成的類不斷被加載朵锣,最終導(dǎo)致 Perm 區(qū)被占滿谬盐。更可怕的是,不同的 classLoader 即便使用相同的類诚些,但是都會對其進(jìn)行加載飞傀,相當(dāng)于同一個東西,如果有 N 個classLoader 那么它將會被加載 N 次诬烹。因此砸烦,在某些情況下,這個問題基本視為無解绞吁,當(dāng)然幢痘,存在大量 classLoader 和大量反射類的情況并不多

解決方案:增加持久代內(nèi)存 ,例如:-XX:MaxPermSize=16M

另附:

JVM常用調(diào)優(yōu)命令詳解

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末家破,一起剝皮案震驚了整個濱河市颜说,隨后出現(xiàn)的幾起案子购岗,更是在濱河造成了極大的恐慌,老刑警劉巖门粪,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喊积,死亡現(xiàn)場離奇詭異,居然都是意外死亡玄妈,警方通過查閱死者的電腦和手機(jī)乾吻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拟蜻,“玉大人溶弟,你說我怎么就攤上這事〔t郑!?“怎么了辜御?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長屈张。 經(jīng)常有香客問我擒权,道長,這世上最難降的妖魔是什么阁谆? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任碳抄,我火速辦了婚禮,結(jié)果婚禮上场绿,老公的妹妹穿的比我還像新娘剖效。我一直安慰自己,他們只是感情好焰盗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布璧尸。 她就那樣靜靜地躺著,像睡著了一般熬拒。 火紅的嫁衣襯著肌膚如雪爷光。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天澎粟,我揣著相機(jī)與錄音蛀序,去河邊找鬼。 笑死活烙,一個胖子當(dāng)著我的面吹牛徐裸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播啸盏,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼重贺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起檬姥,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤曾我,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后健民,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抒巢,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年秉犹,在試婚紗的時候發(fā)現(xiàn)自己被綠了蛉谜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡崇堵,死狀恐怖型诚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鸳劳,我是刑警寧澤狰贯,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站赏廓,受9級特大地震影響涵紊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜幔摸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一摸柄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧既忆,春花似錦驱负、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至庆亡,卻和暖如春匾乓,著一層夾襖步出監(jiān)牢的瞬間捞稿,已是汗流浹背又谋。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娱局,地道東北人彰亥。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像衰齐,于是被迫代替她去往敵國和親任斋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

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

  • 1耻涛、jdk 自帶基礎(chǔ)工具 2废酷、MAT 分析dump 3瘟檩、VM 實時監(jiān)控 4 、遇到過OOM 內(nèi)存溢出有哪些 1澈蟆、J...
    smallsun512閱讀 9,902評論 0 2
  • 1墨辛、jdk 自帶基礎(chǔ)工具 2、MAT 分析dump 3趴俘、VM 實時監(jiān)控 4 睹簇、遇到過OOM 內(nèi)存溢出有哪些 1、J...
    多多的大白閱讀 1,121評論 0 0
  • JVM 內(nèi)存溢出排查思路: 一般來講寥闪,我們會先用 free 命令先來檢查一發(fā)內(nèi)存的各種情況, 堆內(nèi)內(nèi)存 JVM 中...
    程序員阿奇閱讀 3,489評論 0 3
  • ?前言 雖然事隔半年太惠,當(dāng)時排查線上OOM事故的過程記憶猶新,每一個步驟都?xì)v歷在目疲憋,感謝業(yè)務(wù)組凿渊、系統(tǒng)部、壓測組缚柳、監(jiān)控...
    王知無閱讀 297評論 0 1
  • JVM的內(nèi)存布局嗽元? Java虛擬機(jī)主要包含幾個區(qū)域: Java 堆是所有線程共享的一塊內(nèi)存區(qū)域,在虛擬機(jī)啟動時創(chuàng)建...
    upup果閱讀 256評論 0 1