1、錯誤提示:java.lang.OutOfMemoryError: Java heap spacejava
【緣由分析】瀏覽器
tomcat默承認以使用內存爲128MB,在較大型的應用項目中不足以知足運行要求,在日誌中常出現內存溢出的錯誤,Out of Memory(系統內存不足)的異常,瀏覽器顯示500錯誤,一般增長堆棧內存便可解決此問題。tomcat
【解決方法】服務器
Windows 環境:函數
1)免安裝版直接在catalina.bat文件頭部增長如下行便可:工具
set JAVA_OPTS="-Xms256m -Xmx512m"
2)安裝版tomcat由於使用的內存參數寫在註冊表中,能夠直接修改註冊表,也能夠經過tomcat配置工具性能
Linux 環境:spa
直接在catalina.sh文件頭部增長如下行便可:日誌
JAVA_OPTS="-Xms256m -Xmx512m"
其中,-Xms設置初始化最小內存大小,-Xmx設置可使用的最大內存大小,通常爲了下降垃圾回收次數而影響性能這兩個值設置相同值。code
2、錯誤提示: java.lang.OutOfMemoryError: PermGen space
【緣由分析】
PermGen space的全稱是 Permanent Generation space,是指內存的永久保存區域,這塊內存主要是被 JVM 存放 Class 和 Meta 信息的, Class 在被 Loader 時就會被放到 PermGen space 中, 它和存放類實例(Instance)的 Heap 區域不一樣, GC(Garbage Collection)垃圾回收不會在主程序運行期對 PermGen space 進行清理,因此若是你的應用中不少 Class 的話就可能致使 PermGen space 錯誤,這種錯誤常見在 Web 服務器對 JSP 進行 pre compile 的時候。 若是你的 WEB APP 下都用了大量的第三方jar, 其大小超過了 JVM 默認的大小(4M),那麼就會產生此錯誤信息。
【解決方法】
Windows 環境:
1)免安裝版tomcat在catalina.bat文件頭部增長如下行便可():
set JAVA_OPTS="-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m"
2)安裝版tomcat方法同第一種內存溢出解決方法相同
Linux 環境:
JAVA_OPTS="-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m"
3、錯誤提示:java.lang.StackOverflowError
【緣由分析】
函數的調用過程都體如今堆棧和退棧上。調用構造函數的「層」太多,以致於把棧區溢出了。
通常棧區都遠小於堆區,由於函數調用過程每每不會多於上千層,而即使每一個函數調用要1K的空間,那麼棧區也不過須要1MB的空間。一般棧區的大小是1-2MB。
遞歸也不要遞歸層數過多,也容易致使溢出。
【解決方法】
建議修改程序或更換較新版本的tomcat。