如何增加jBoss服务器的堆大小

我的项目中有一个上传文件场景。 当我尝试上传大文件时,它会给我一个OutOfMemory错误。 该错误与Java堆大小有关。

如何在Java中增加堆大小以及我需要为此更改哪个文件? 我正在使用jboss 5.1服务器来运行我的应用程序。

您可以通常的方式将其设置为JVM参数,例如-Xms1024m -Xmx2048m ,最小堆为1GB,最大堆为2GB。 JBoss将使用JAVA_OPTS环境变量来包含其他JVM参数,您可以在/bin/run.conf.bat文件中指定它:

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

但是,这更像是一种解决方法而不是真正的解决方案。 如果多个用户同时上传大文件,您迟早会遇到同样的问题。 你需要不断增加内存。 您应该配置文件上载解析器以将上载的文件存储在临时磁盘上而不是完全存储在内存中。 只要不清楚您正在使用哪种解析器,就无法给出合适的解答。 但是,除了常用的Apache Commons FileUpload之外,您应该阅读带有“阈值大小”作为关键字的文档来配置上传文件的内存限制。 当文件大小超过阈值时,它将被写入磁盘。

在wildfly 8及更高版本中,转到/bin/standalone.conf并将您的JAVA_OPTS放在那里,只需您所需的一切。

运行java时使用-Xms和-Xmx命令行选项:

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

有关更多帮助,请在命令行中键入java -X

在JBoss bin文件夹中查找run.bat文件(Unix上的run.sh)

在该行的末尾添加-Xmx512m,查找行set JAVA_OPTS (或Unix上的JAVA_OPTS)。 将数字更改为要分配给JBoss的内存量。

如果您使用自定义脚本来启动jboss实例,则还可以在其中添加set JAVA_OPTS选项。

编辑run.conf文件中的以下条目。 但是如果你有多个JVM在同一个JBoss上运行,你可能想通过-Xms2g -Xmx4g的命令行参数(或者你喜欢的首选启动/最大内存设置)来运行它。

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

在我的例子中,对于jboss 6.3我必须在文件jboss-eap-6.3\bin\standalone.conf.bat更改JAVA_OPTS ,并为jvm设置以下值-Xmx8g -Xms8g -Xmn3080m以占用8gb空间。

我已经提到了在WindowsLinux环境中增加堆大小所需的配置更改。

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" 

现在重新启动服务器,它将工作,而不会提示任何堆大小错误。

有关更多信息,请参阅以下链接。

https://access.redhat.com/documentation/en-us/jboss_enterprise_application_platform/5/html/getting_started_guide/adjust_memory_settings