我的項目中有一個上傳文件場景。當我試圖上傳大文件時,它會給我一個OutOfMemory錯誤。該錯誤與Java堆大小有關。如何增加jBoss服務器的堆大小
如何增加Java中的堆大小以及需要爲此更改哪個文件?我使用jboss 5.1服務器來運行我的應用程序。
我的項目中有一個上傳文件場景。當我試圖上傳大文件時,它會給我一個OutOfMemory錯誤。該錯誤與Java堆大小有關。如何增加jBoss服務器的堆大小
如何增加Java中的堆大小以及需要爲此更改哪個文件?我使用jboss 5.1服務器來運行我的應用程序。
使用-Xms和-Xmx命令行選項乳寧Java時:
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
對於命令行更多的幫助類型java -X
。
您可以通過常用方式將其設置爲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」作爲關鍵字來閱讀文檔,以配置上傳文件的內存限制。當文件大小超過閾值時,它將被寫入磁盤。在該行的末尾
+1建議_not_將整個文件存儲在內存中是很好的。 – 2011-06-06 14:22:36
看着你的JBoss的bin文件夾中的文件run.bat中(在Unix run.sh)
就要排隊 set JAVA_OPTS
,(或者只是JAVA_OPTS在Unix)添加-Xmx512m 。將該數字更改爲您要分配給JBoss的內存量。
如果您使用自定義腳本來啓動您的jboss實例,那麼您也可以在其中添加設置的JAVA_OPTS選項。
在run.conf文件中編輯以下條目。但是,如果你有在同一JBoss上運行多個JVM,您可能希望通過-Xms2g -Xmx4g的命令行參數來運行它(或任何你喜歡的起始/最大內存設置。
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms2g -Xmx4g -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true
在wildfly 8後來,去/bin/standalone.conf
,把你的JAVA_OPTS那裏,所有你需要
可能重複 - 。http://stackoverflow.com/questions/1565388/increase-heap-size-in-java – mre 2011-06-06 13:45:38