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

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

