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大小.
當前項目中環境配置如下: