IT科技

當前位置 /首頁/IT科技 > /列表

outofmemoryerror怎麼解決

outofmemoryerror也就是內存溢出,在java法中比較常見,出現這種一般是有兩種比較常見的情況。

1、

OutOfMemoryError:PermGen space

這種情況出現可能是因為在程序中使用了大量的jar或者class,從而導致java虛擬機裝載類的空間不夠,也就是與Permanent Generation space有關。

若是想要解決一般有兩種方法:

1.第一種是可以增加java虛擬機中的XX:PermSize和XX:MaxPermSize參數的大小,其中XX:PermSize是屬於初始永久保存區域大小,而XX:MaxPermSize則是最大永久保存區域大小。

比如針對tomcat6.0,在catalina.sh或者catalina.bat文件中一系列環境變量名説明結束處,即在70行左右的位置上增加一行,具體是:

JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m"

若是windows服務器還能夠在系統環境變量中設置。使用tomcat發佈sprint+struts+hibernate架構的程序時可能會很容易發生這種內存溢出的錯誤。可以使用上述的方法,基本上就能夠解決問題。

outofmemoryerror怎麼解決

2.第二種方法是清理應用程序中web-inf/lib下的jar,若是tomcat部署了多個應用,並且多個應用都使用了相同的jar,可以選擇將共同的jar移到tomcat共同的lib下,減少類的重複加載。這種方法總的來説還是不錯的,當然若是可以選擇的話還是儘量使用第一種方法會比較好。

2、

OutOfMemoryError:Java heap space

發生這種問題的原因也可能是因為java虛擬機創建的對象太多了,在進行垃圾回收之間,虛擬機所分配的到堆內存空間已經用滿了,也就是與Heap space有關。

若是想要解決這個問題一般也會有兩種方法:

1.首先可以檢查一下程序,查看是否有無窮迴圈或者不必要地重複創建大量對象,在找到原因之後,可以修改程序與算法。

2.還可以選擇增加Java虛擬機中Xms(即初始堆大小)與Xmx(即最大堆大小)參數的大小。

比如:set JAVA_OPTS= -Xms256m -Xmx1024m

outofmemoryerror怎麼解決 第2張

當然,具體還是要根據實際情況來,要確定好問題所在然後選擇正確的方式來解決即可。

TAG標籤:outofmemoryerror #