解決OOM:JVM內(nèi)存不足問題
在運(yùn)行項(xiàng)目的時候,代碼maven等正確的情況下,項(xiàng)目跑不起來報內(nèi)存不足的問題,很有可能就是OOM問題!
什么是OOM?
“Out Of Memory”=“內(nèi)存不足”
官方回答:
- 當(dāng) JVM 因?yàn)闆]有足夠的內(nèi)存來為對象分配空間,并且 垃圾回收器 也已經(jīng)沒有空間可供回收時,就會拋出這個錯誤。(注:非exception,已經(jīng)嚴(yán)重到不足以被應(yīng)用處理)。
舉例:
- 就是你設(shè)置的項(xiàng)目需要10內(nèi)存而你只有5,所以報OOM問題。
知識點(diǎn)插入:
- 內(nèi)存泄露:申請使用完的內(nèi)存沒有釋放,導(dǎo)致虛擬機(jī)不能再次使用該內(nèi)存,此時這段內(nèi)存就泄露了,因?yàn)樯暾堈卟挥昧?,而又不能被虛擬機(jī)分配給別人用。
- 內(nèi)存溢出:申請的內(nèi)存超出了JVM能提供的內(nèi)存大小,此時稱之為溢出。
OOM出現(xiàn)的原因
- 分配過少:JVM 初始化內(nèi)存小,業(yè)務(wù)使用了大量內(nèi)存;或者不同 JVM 區(qū)域分配內(nèi)存不合理
- 內(nèi)存泄漏:某一個對象被頻繁申請,不用了之后卻沒有被釋放,發(fā)生內(nèi)存泄漏,導(dǎo)致內(nèi)存耗盡
OOM的解決方法
直接的解決辦法是將setting->Compile中屬性的值調(diào)大,我這里是調(diào)到了3000

合理設(shè)置對外內(nèi)存大?。?/strong>
根據(jù)應(yīng)用的實(shí)際需求調(diào)整-XX:MaxDirectMemorySize參數(shù),給予足夠的直接內(nèi)存空間。(親測:修改錯誤IDEA會無法啟動,建議使用第一種♥? )
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java代理模式之靜態(tài)代理與動態(tài)代理的區(qū)別及優(yōu)缺點(diǎn)
代理模式是一種常用的設(shè)計模式,它允許通過引入一個代理對象來控制對目標(biāo)對象的訪問,在Java中,代理模式被廣泛應(yīng)用,它可以提供額外的功能,如權(quán)限檢查、緩存、日志記錄等,本文將介紹靜態(tài)代理與動態(tài)代理的區(qū)別及優(yōu)缺點(diǎn),需要的朋友可以參考下2023-06-06
配置pom.xml用maven打包java工程的方法(推薦)
下面小編就為大家?guī)硪黄渲胮om.xml用maven打包java工程的方法(推薦)。小編覺得挺不錯的, 現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
關(guān)于TreeMap自定義排序規(guī)則的兩種方式
這篇文章主要介紹了關(guān)于TreeMap自定義排序規(guī)則的兩種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
Java8函數(shù)式接口Predicate用法示例詳解
這篇文章主要為大家介紹了Java8函數(shù)式接口Predicate用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
深入淺出講解Spring框架中AOP及動態(tài)代理的應(yīng)用
在軟件業(yè),AOP為Aspect?Oriented?Programming的縮寫,意為:面向切面編程,通過預(yù)編譯方式和運(yùn)行期間動態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)2022-03-03
Spring的RedisTemplate存儲的key和value有特殊字符的處理
這篇文章主要介紹了Spring的RedisTemplate存儲的key和value有特殊字符的處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
深入了解Java中Cookie和Session的區(qū)別
會話跟蹤是Web程序中常用的技術(shù),用來跟蹤用戶的整個會話,常用的會話跟蹤技術(shù)是Cookie與Session,本文就詳細(xì)的介紹一下Java中Cookie和Session的區(qū)別,感興趣的可以了解一下2023-06-06
Spring Boot 整合 ShedLock 處理定時任務(wù)重復(fù)執(zhí)行的問題小結(jié)
ShedLock是解決分布式系統(tǒng)中定時任務(wù)重復(fù)執(zhí)行問題的Java庫,通過在數(shù)據(jù)庫中加鎖,確保只有一個節(jié)點(diǎn)在指定時間執(zhí)行任務(wù),它與SpringScheduler、Quartz等框架結(jié)合使用,本文介紹Spring Boot 整合 ShedLock 處理定時任務(wù)重復(fù)執(zhí)行的問題,感興趣的朋友一起看看吧2025-02-02

