您好,登錄后才能下訂單哦!
JVM 發(fā)生內(nèi)存溢出的原因以及解決辦法是怎樣的,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
發(fā)生頻率:5顆星
造成原因
無(wú)法在 Java 堆中分配對(duì)象
吞吐量增加
應(yīng)用程序無(wú)意中保存了對(duì)象引用,對(duì)象無(wú)法被 GC 回收
應(yīng)用程序過度使用 finalizer。finalizer 對(duì)象不能被 GC 立刻回收。finalizer 由結(jié)束隊(duì)列服務(wù)的守護(hù)線程調(diào)用,有時(shí) finalizer 線程的處理能力無(wú)法跟上結(jié)束隊(duì)列的增長(zhǎng)
解決方案
使用 -Xmx 增加堆大小
修復(fù)應(yīng)用程序中的內(nèi)存泄漏
發(fā)生頻率:5顆星
造成原因
Java 進(jìn)程98%的時(shí)間在進(jìn)行垃圾回收,恢復(fù)了不到2%的堆空間,最后連續(xù)5個(gè)(編譯時(shí)常量)垃圾回收一直如此。
解決方案
使用 -Xmx 增加堆大小
使用 -XX:-UseGCOverheadLimit 取消 GC 開銷限制
修復(fù)應(yīng)用程序中的內(nèi)存泄漏
發(fā)生頻率:2顆星
造成原因
應(yīng)用程序試圖分配一個(gè)超過堆大小的數(shù)組
解決方案
使用 -Xmx 增加堆大小
修復(fù)應(yīng)用程序中分配巨大數(shù)組的 bug
發(fā)生頻率:3顆星
造成原因
Perm gen 空間包含:
類的名字、字段、方法
與類相關(guān)的對(duì)象數(shù)組和類型數(shù)組
JIT 編譯器優(yōu)化
當(dāng) Perm gen 空間用盡時(shí),將拋出異常。
解決方案
使用 -XX: MaxPermSize 增加 Permgen 大小
不重啟應(yīng)用部署應(yīng)用程序可能會(huì)導(dǎo)致此問題。重啟 JVM 解決
發(fā)生頻率:3顆星
造成原因
從 Java 8 開始 Perm gen 改成了 Metaspace,在本機(jī)內(nèi)存中分配 class 元數(shù)據(jù)(稱為 metaspace)。如果 metaspace 耗盡,則拋出異常
解決方案
通過命令行設(shè)置 -XX: MaxMetaSpaceSize 增加 metaspace 大小
取消 -XX: maxmetsspacedize
減小 Java 堆大小,為 MetaSpace 提供更多的可用空間
為服務(wù)器分配更多的內(nèi)存
可能是應(yīng)用程序 bug,修復(fù) bug
發(fā)生頻率:5顆星
造成原因
內(nèi)存不足,無(wú)法創(chuàng)建新線程。由于線程在本機(jī)內(nèi)存中創(chuàng)建,報(bào)告這個(gè)錯(cuò)誤表明本機(jī)內(nèi)存空間不足
解決方案
為機(jī)器分配更多的內(nèi)存
減少 Java 堆空間
修復(fù)應(yīng)用程序中的線程泄漏。
增加操作系統(tǒng)級(jí)別的限制
ulimit -a
用戶進(jìn)程數(shù)增大 (-u) 1800
使用 -Xss 減小線程堆棧大小
發(fā)生頻率:1顆星
造成原因
內(nèi)核任務(wù):內(nèi)存不足結(jié)束器,在可用內(nèi)存極低的情況下會(huì)殺死進(jìn)程
解決方案
將進(jìn)程遷移到不同的機(jī)器上
給機(jī)器增加更多內(nèi)存
與其他 OOM 錯(cuò)誤不同,這是由操作系統(tǒng)而非 JVM 觸發(fā)的。
發(fā)生頻率:1顆星
造成原因
本機(jī)方法(native method)分配失敗
打印的堆棧跟蹤信息,最頂層的幀是本機(jī)方法
解決方案
使用操作系統(tǒng)本地工具進(jìn)行診斷
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。