java.lang.OutOfMemoryError

there are two situations in this error, one is Java heap space and solution as below:
a.在Eclipse裏選:Window->Preference->InstalledJREs->選中->Edit,

在Default VM Arguments裏輸入-Xms256m -Xmx1024m,表示最小內存256M,最大1G,然後運行就可以了。
 圖片

 b.Run->Run Configurations...找到相應的運行配置,在VM arguments里加入:-Xms256m -Xmx1024m

JVM 堆的設置是指java程序運行過程中JVM可以調配使用的內存空間的設置.JVM在啓動的時候會自動設置Heap size的值,其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置.
如:-Xms64m -Xmx128m
如果Heap Size設置偏小,除了這些異常信息外,還會發現程序的響應速度變慢了。GC佔用了更多的時間,而應用分配到的執行時間較少.
Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置爲相同,而-Xmn爲1/4的-Xmx值。
Heap size的 -Xms -Xmn 設置不要超出物理內存的大小。否則會提示“Error occurred during initialization of VM Could not reserve enough space for object heap”。

another one is PermGen space, solution as below:
a.Run->Run Configurations...找到相應的運行配置,在VM arguments里加入:-XX:PermSize=128M -XX:MaxPermSize=128m

b.在eclipse.ini配置文件中加上以下兩行
-XX:PermSize=128M 
-XX:MaxPermSize=128M

PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域。
OutOfMemoryError: PermGen space從表面上看就是內存益出,解決方法也一定是加大內存。
說說爲什麼會內存益出:
1.這一部分用於存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區域,它和和存放Instance的Heap區域不同。
2.GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web服務器對JSP進行pre compile的時候。
如果你的WEB APP下都用了大量的第三方jar,其大小超過了jvm默認的大小(4M)那麼就會產生此錯誤信息了。
解決方法:手動設置MaxPermSize大小.

當前項目中環境配置如下:
圖片



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章