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

18

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

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


可能是重复问题 - https://dev59.com/lHI_5IYBdhLWcg3wAeLl - mre
10个回答

34

你可以像平常设置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”为关键词的文档,以配置上传文件的内存限制。当文件大小超过阈值时,它将被写入磁盘。


3
不要将整个文件存储在内存中的建议是很好的。 - Paul Cager

8
在Wildfly 8及更高版本中,前往/bin/standalone.conf并在其中放置您所需的JAVA_OPTS。

6

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

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

6
我已经提到了在 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


5

运行Java时,请使用-Xms和-Xmx命令行选项:

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

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


3

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

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

如果您正在使用自定义脚本启动jboss实例,则也可以在那里添加set JAVA_OPTS选项。


1

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


还需添加Jboss-eap-7.1相关内容。 - Rajeev Ranjan

0

需要更改什么?

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

在哪里更改?(通常情况下)

bin/standalone.conf(Linux) standalone.conf.bat(Windows)

如果您正在使用覆盖现有设置的自定义脚本,该怎么办?

setAppServerEnvironment.cmd/.sh(文件名可能是这种类型)

我们的一个委员会成员已经提供了更多信息!BalusC


0
请在bin/standalone.conf.bat中添加以下选项:
   set "JAVA_OPTS=-Xms1G -Xmx1G -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=1024m"

0
您可以在Linux的standalone.conf和Windows的standalone.conf.bat文件中设置或增加堆大小配置,例如-Xms/-Xmx或其他JVM选项,以及JAVA_OPTS JVM选项,来调整JBoss应用服务器的性能。
JAVA_OPTS="-Xms2048M -Xmx2048M"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接