outofmemoryerror怎么解決呢?下面就讓我們一起來了解一下吧:
outofmemoryerror也就是內(nèi)存溢出,在java法中比較常見,出現(xiàn)這種一般是有兩種比較常見的情況。
1、
OutOfMemoryError:PermGen space
這種情況出現(xiàn)可能是因為在程序中使用了大量的jar或者class,從而導(dǎo)致java虛擬機裝載類的空間不夠,也就是與Permanent Generation space有關(guān)。
若是想要解決一般有兩種方法:
1.第一種是可以增加java虛擬機中的XX:PermSize和XX:MaxPermSize參數(shù)的大小,其中XX:PermSize是屬于初始永久保存區(qū)域大小,而XX:MaxPermSize則是最大永久保存區(qū)域大小。
比如針對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)的程序時可能會很容易發(fā)生這種內(nèi)存溢出的錯誤??梢允褂蒙鲜龅姆椒?,基本上就能夠解決問題。
2.第二種方法是清理應(yīng)用程序中web-inf/lib下的jar,若是tomcat部署了多個應(yīng)用,并且多個應(yīng)用都使用了相同的jar,可以選擇將共同的jar移到tomcat共同的lib下,減少類的重復(fù)加載。這種方法總的來說還是不錯的,當然若是可以選擇的話還是盡量使用第一種方法會比較好。
2、
OutOfMemoryError:Java heap space
發(fā)生這種問題的原因也可能是因為java虛擬機創(chuàng)建的對象太多了,在進行垃圾回收之間,虛擬機所分配的到堆內(nèi)存空間已經(jīng)用滿了,也就是與Heap space有關(guān)。
若是想要解決這個問題一般也會有兩種方法:
1.首先可以檢查一下程序,查看是否有死循環(huán)或者不必要地重復(fù)創(chuàng)建大量對象,在找到原因之后,可以修改程序與算法。
2.還可以選擇增加Java虛擬機中Xms(即初始堆大?。┡cXmx(即最大堆大?。﹨?shù)的大小。
比如:set JAVA_OPTS= -Xms256m -Xmx1024m
當然,具體還是要根據(jù)實際情況來,要確定好問題所在然后選擇正確的方式來解決即可。
以上就是小編的分享了,希望能夠幫助到大家。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com