1. 程式人生 > >MyEclipse啟動Tomcat報outOfMerorgError

MyEclipse啟動Tomcat報outOfMerorgError

Tomcat記憶體溢位的原因
  在生產環境中tomcat記憶體設定不好很容易出現記憶體溢位。造成記憶體溢位是不一樣的,當然處理方式也不一樣。
  這裡根據平時遇到的情況和相關資料進行一個總結。常見的一般會有下面三種情況:
  1.OutOfMemoryError: Java heap space
  2.OutOfMemoryError: PermGen space
  3.OutOfMemoryError: unable to create new native thread.
  Tomcat記憶體溢位解決方案
  對於前兩種情況,在應用本身沒有記憶體洩露的情況下可以用設定tomcat jvm引數來解決。(-Xms -Xmx-XX:PermSize -XX:MaxPermSize)
  最後一種可能需要調整作業系統和tomcat jvm引數同時調整才能達到目的。



執行JavaWeb專案的時候丟擲異常:

Exception in thread “main” Java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)

在eclipse整合tomcat環境下反覆熱釋出應用也會出現此現象;

網上查詢可知該異常產生的原因是JVM預設分配的4M執行空間過小,J2EE專案載入的類過多,造成記憶體溢位。

解決方案為通過新增下面的引數增加分配給JVM的記憶體空間:


-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m


網上的解決方案多半是針對純Tomcat的情況,並非通過Eclipse啟動的Tomcat。
或者修改eclipse.ini配置檔案,不過這些方法都不適合Eclipse執行Tomcat丟擲該異常的情況。

修改eclipse.ini配置檔案增大的是Ecipse開發平臺本身執行的JVM的空間,並非Eclipse啟動Tomcat的記憶體空間。


解決方案:Myeclipse window->Preferences->Service->Tomcat->Tomcat7.X->jdk->VM arguments內填寫
-Xms512m -Xms1024m
-XX:PermSize=256m -XX:MaxPermSize=512m