我的项目中有一个上传文件场景。当我尝试上传大文件时,它会给我一个OutOfMemory错误。该错误与Java堆大小有关。
如何在Java中增加堆大小以及我需要为此更改哪个文件?我正在使用jboss 5.1服务器来运行我的应用程序。
答案 0 :(得分:27)
您可以通常的方式将其设置为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 :(得分:5)
在wildfly 8及更高版本上,转到/bin/standalone.conf
,然后将您的JAVA_OPTS放在那里,尽情享受。
答案 2 :(得分:4)
运行java时使用-Xms和-Xmx命令行选项:
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
要获得更多帮助,请在命令行中键入java -X
。
答案 3 :(得分:4)
在run.conf文件中编辑以下条目。但是如果你在同一个JBoss上运行多个JVM,你可能想通过-Xms2g -Xmx4g的命令行参数(或者你喜欢的首选启动/最大内存设置)来运行它。
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms2g -Xmx4g -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true
答案 4 :(得分:3)
在JBoss bin文件夹中查找run.bat文件(Unix上的run.sh)
寻找这条线 {@ 1}},(或者只是Unix上的JAVA_OPTS)在该行的末尾添加-Xmx512m。将数字更改为要分配给JBoss的内存量。
如果您使用自定义脚本启动jboss实例,您也可以在那里添加设置JAVA_OPTS选项。
答案 5 :(得分:1)
我已经提到在 Windows 或 Linux 环境中增加堆大小所需的配置更改。
Linux :
bin/standalone.conf
检查以下行
JAVA_OPTS
并进行相应更改以适合您的堆大小
-Xms1303m: initial heap size in megabytes
-Xmx1303m: maximum heap size in megabytes
JAVA_OPTS="-Xms1024M -Xmx2048M -XX:MaxPermSize=2048M -XX:MaxHeapSize=2048M"
Windows :
bin/standalone.conf.bat
JAVA_OPTS="-Xms1024M -Xmx2048M -XX:MaxPermSize=2048M -XX:MaxHeapSize=2048M"
现在重新启动服务器,它将在不提示任何堆大小错误的情况下正常工作。
有关更多信息,您可以在下面引用此链接。
答案 6 :(得分:1)
在bin / standalone.conf.bat中的jboss中添加以下选项
set "JAVA_OPTS=-Xms1G -Xmx1G -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=1024m"
答案 7 :(得分:0)
在我的情况下,对于jboss 6.3
,我必须更改文件JAVA_OPTS
中的jboss-eap-6.3\bin\standalone.conf.bat
,并为jvm设置以下值-Xmx8g -Xms8g -Xmn3080m
,以占用8gb的空间。
答案 8 :(得分:0)
要更改什么?
设置“ JAVA_OPTS =%JAVA_OPTS%-Xms1024m -Xmx2048m”
在哪里更改? (通常)
bin / standalone.conf(Linux)standalone.conf.bat(Windows)
如果您正在使用覆盖现有设置的自定义脚本怎么办?然后呢?
setJBosssEnvironment.cmd / .sh(类型为文件名)
我们的一些委员会成员已经提供了更多信息! BalusC。
答案 9 :(得分:0)
您可以增加或设置堆大小配置,即 -Xms
/Xmx
或 JVM
应用服务器中的任何其他 JBoss
选项 JAVA_OPTS
{ Windows 中 JVM
和 standalone.conf(Linux)
文件中的 {1}} 选项。
standalone.conf.bat