2011-06-06 40 views
9

我的項目中有一個上傳文件場景。當我試圖上傳大文件時,它會給我一個OutOfMemory錯誤。該錯誤與Java堆大小有關。如何增加jBoss服務器的堆大小

如何增加Java中的堆大小以及需要爲此更改哪個文件?我使用jboss 5.1服務器來運行我的應用程序。

+0

可能重複 - 。http://stackoverflow.com/questions/1565388/increase-heap-size-in-java – mre 2011-06-06 13:45:38

回答

3

使用-Xms和-Xmx命令行選項乳寧Java時:

-Xms<size>  set initial Java heap size 
-Xmx<size>  set maximum Java heap size 

對於命令行更多的幫助類型java -X

23

您可以通過常用方式將其設置爲JVM參數,例如, -Xms1024m -Xmx2048m爲1GB的最小堆和2GB的最大堆。 JBoss會使用JAVA_OPTS環境變量包括其他JVM參數,你可以在/bin/run.conf.bat文件中指定:

set "JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx2048m" 

但是,這更多的是解決方法不能真正解決問題。如果多個用戶同時上傳大文件,遲早會遇到同樣的問題。你需要不斷增加記憶。您應該配置文件上傳解析器以將上載的文件存儲在臨時磁盤上,而不是完全存儲在內存中。只要你不清楚你正在使用哪個解析器,就不能給出合適的答案。但是,在封面下使用Apache Commons FileUpload時,通常應使用「threshold size」作爲關鍵字來閱讀文檔,以配置上傳文件的內存限制。當文件大小超過閾值時,它將被寫入磁盤。在該行的末尾

+2

+1建議_not_將整個文件存儲在內存中是很好的。 – 2011-06-06 14:22:36

3

看着你的JBoss的bin文件夾中的文件run.bat中(在Unix run.sh)

就要排隊 set JAVA_OPTS,(或者只是JAVA_OPTS在Unix)添加-Xmx512m 。將該數字更改爲您要分配給JBoss的內存量。

如果您使用自定義腳本來啓動您的jboss實例,那麼您也可以在其中添加設置的JAVA_OPTS選項。

3

在run.conf文件中編輯以下條目。但是,如果你有在同一JBoss上運行多個JVM,您可能希望通過-Xms2g -Xmx4g的命令行參數來運行它(或任何你喜歡的起始/最大內存設置。

if [ "x$JAVA_OPTS" = "x" ]; then 
    JAVA_OPTS="-Xms2g -Xmx4g -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true 
2

在wildfly 8後來,去/bin/standalone.conf,把你的JAVA_OPTS那裏,所有你需要