2013-11-04 37 views
4
的OutOfMemoryError

好了,所以我最近搬到一個新計算機上使用新安裝的Win7專業版的的Tomcat 7從UncaughtExceptionHandler的

我遇到我以前所有的文件和文件夾複製從我的舊電腦

我複製我的Tomcat 7文件複製到新PC

但現在當我嘗試啓動它,我得到這個錯誤

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "http-bio-8080-exec-2" 

我到處找一個解決這一發現洪特不同的人的紅色但沒有幫助我

任何想法可能會導致此錯誤? (我使用的是舊PC和完全相同的項目,仍然工作的舊電腦上覆制完全相同的tomcat的文件)

注:

就像他們在我正好設置環境變量我舊計算機。

我用我已經使用了我以前的PC上年齡完全相同的web應用程序(所以它不能是內存泄漏或與項目不對勁)

回答

0

您可以將這些成JAVA_OPTS變量,位於catalina.sh(tomcatPath/bin)中的內部:

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 
-server -Xms1536m -Xmx1536m 
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m 
-XX:MaxPermSize=256m -XX:+DisableExplicitGC" 

另一種可能性是可以有內存泄漏。您可以在這裏查看troubleshooting memory leaks

+0

爲什麼我會改變catalina.sh文件現在,如果它完美地工作以前的PC上,不有道理,它不能成爲內存泄漏,因爲我也運行了我以前使用過的計算機上的完全相同的項目 – Andre

+1

您確定您使用的是相同的Java和ide版本嗎? –

+1

無論爲什麼它的工作方式不同,如果增加內存,*會工作*。 –

8

我得到了同樣的錯誤信息,雖然從Web上的其他來源可能會由於堆空間不足而出現錯誤消息,而不僅僅是由於用完了permgen空間。

我需要從命令行解決這個問題,而不是使用圖形界面。要做到這一點,我說在<tomcat install directory>/bin/setenv.sh與內容的新文件:

CATALINA_OPTS="-Xms4096M -Xmx4096M -XX:PermSize=512M -XX:MaxPermSize=512M" 

如果你有一個現有的setenv.sh文件,將它添加到該文件。使用適合您的安裝的任何數字 - 我的服務器有96GB的內存,所以我可以爲Tomcat支付4GB。

catalina.sh記錄,你應該添加這setenv.sh而不是到catalina.sh,以保持這種局部修改從基catalina.sh腳本分開。您應該更改CATALINA_OPTS而不是JAVA_OPTS,以便僅爲實際的Tomcat服務器要求更大量的內存;如果系統內存不足,更改JAVA_OPTS也需要關閉進程的內存,這可能會影響服務器的關閉。

1

我只在Windows系統中添加下面一行到catalina.bat中7 Tomcat的7

set JAVA_OPTS =" -XX:PermSize=512m -XX:MaxPermSize=1024m" 

我有4 GB RAM整理出了同樣的問題。

0

經過多次搜索,我找到了這個解決方案。它工作正常。在「setenv」批處理文件中將「set JAVA_OPTS = -Dfile.encoding = UTF-8 -Xms128m -Xmx1024m -XX:PermSize = 64m -XX:MaxPermSize = 256m」設置爲「

」set JAVA_OPTS =%JAVA_OPTS%在以下路徑

\ JasperReports的服務器-CP-5.6.0 \ Apache的Tomcat的\ BIN

0

我能夠使用的建議在這裏調試我與特拉維斯CI運行內存有問題同時運行Eclipse插件單元測試。我必須設置MaxPermSize參數,我做到了通過添加以下到我的Java Ant任務:

<jvmarg line="-Xms40m -Xmx1024m -XX:MaxPermSize=512m"/>