沒想到至今這個問題還沒未能解決,有人給出最好的解決方法是不使用JDK,使用BEA的JRokit,固然如今Oracle,BEA,SU已經成爲一家人了,我想這個問題應該會更快有更好的解決方案。linux
好了仍是說說如何解決問題吧,網上大量的資料說在tomcat這樣設置:SET JAVA_OPTS= -Xms64m -Xmx512m,但通過本人的測試,沒有一點做用,詳細看了JVM內存的分配機制後才知道,-Xms和--Xmx是調整Java heap space(即堆內存)的大小,ava heap space區域中存放對象,GC會收集這塊區域。tomcat
若是出現的異常類型是:OutOfMemoryError: Java heap space,那應該設置 SET JAVA_OPTS= -Xms64m -Xmx512m。eclipse
若是出現的異常類型是:OutOfMemoryError PermGen space,那應該設置set JAVA_OPTS=-Xms128m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256mssh
常見的有兩種設置方法:測試
若是在開發環境中啓動tomcat,以eclipse爲例:選擇window->Preferences->MyEclipse-servers-Tomcat->JDK 在右側框Optional Java VM arguments中加入:-Xms128m -Xmx512m -XX:PermSize=128M -XX:PermSize=256Mspa
若是獨立啓動tomcat,修改tomcat/bin/catalina.bat文件,查找set JAVA_OPTS,找到後把這一行修改成:設計
set JAVA_OPTS=-Xms128m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M,設置的時候要注意:-Xms+X:PermSize不能大於系統支持的最大JVM的大小。具體大小根據本身內存大小調整吧。server