outofmemoryerror怎么解決
發(fā)布時(shí)間:2025-12-14 | 來源:互聯(lián)網(wǎng)轉(zhuǎn)載和整理
outofmemoryerror怎么解決呢?下面就讓我們一起來了解一下吧:outofmemoryerror也就是內(nèi)存溢出,在java法中比較常見,出現(xiàn)這種一般是有兩種比較常見的情況。
1、 OutOfMemoryError:PermGenspace這種情況出現(xiàn)可能是因?yàn)樵诔绦蛑惺褂昧舜罅康膉ar或者class,從而導(dǎo)致java虛擬機(jī)裝載類的空間不夠,也就是與PermanentGenerationspace有關(guān)。若是想要解決一般有兩種方法:1.第一種是可以增加java虛擬機(jī)中的XX:PermSize和XX:MaxPermSize參數(shù)的大小,其中XX:PermSize是屬于初始永久保存區(qū)域大小,而XX:MaxPermSize則是最大永久保存區(qū)域大小。比如針對(duì)tomcat6.0,在catalina.sh或者catalina.bat文件中一系列環(huán)境變量名說明結(jié)束處,即在70行左右的位置上增加一行,具體是:JAVA_OPTS=-XX:PermSize=64M-XX:MaxPermSize=128m若是windows服務(wù)器還能夠在系統(tǒng)環(huán)境變量中設(shè)置。使用tomcat發(fā)布sprint+struts+hibernate架構(gòu)的程序時(shí)可能會(huì)很容易發(fā)生這種內(nèi)存溢出的錯(cuò)誤。可以使用上述的方法,基本上就能夠解決問題。2.第二種方法是清理應(yīng)用程序中web-inf/lib下的jar,若是tomcat部署了多個(gè)應(yīng)用,并且多個(gè)應(yīng)用都使用了相同的jar,可以選擇將共同的jar移到tomcat共同的lib下,減少類的重復(fù)加載。這種方法總體而言還是不錯(cuò)的,當(dāng)然若是可以選擇的話還是盡量使用第一種方法會(huì)比較好。
2、 OutOfMemoryError:Javaheapspace發(fā)生這種問題的原因也可能是因?yàn)閖ava虛擬機(jī)創(chuàng)建的對(duì)象太多了,在進(jìn)行垃圾回收之間,虛擬機(jī)所分配的到堆內(nèi)存空間已經(jīng)用滿了,也就是與Heapspace有關(guān)。若是想要解決這個(gè)問題一般也會(huì)有兩種方法:1.首先可以檢查一下程序,查看是否有死循環(huán)或者不必要地重復(fù)創(chuàng)建大量對(duì)象,在找到原因之后,可以修改程序與算法。2.還可以選擇增加Java虛擬機(jī)中Xms(即初始堆大小)與Xmx(即最大堆大?。﹨?shù)的大小。比如:setJAVA_OPTS=-Xms256m-Xmx1024m當(dāng)然具體還是要根據(jù)實(shí)際情況來,要確定好問題所在然后選擇正確的方式來解決即可。