當前位置:生活全書館 >

IT科技

> outofmemoryerror怎麼解決

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張

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

標籤: outofmemoryerror
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/45o033.html