1. 概述

在本文中,我们将探讨 如何为 WildFly 服务增加堆内存(Heap Memory)大小。

✅ 在实际生产或高并发测试场景中,服务器可能需要运行多个应用或处理大量请求,此时默认的 JVM 堆内存往往不够用,容易出现 OutOfMemoryError。适当调大堆内存是解决这类问题最直接的方式之一。

⚠️ 注意:堆内存设置并非越大越好,需结合物理内存、GC 性能和应用实际需求综合评估。


2. 通过启动配置文件修改

standalone 独立模式下,可以通过修改 WildFly 的启动配置文件来调整 JVM 堆内存。

文件位置

进入 WildFly 安装目录下的 bin 子目录,找到对应系统的配置文件:

  • Unix/Linux 系统:standalone.conf
  • Windows 系统:standalone.conf.bat

修改方式

打开文件,找到包含 JAVA_OPTS 的行,修改 -Xms(初始堆大小)和 -Xmx(最大堆大小)参数即可。

示例(将初始堆设为 256MB,最大堆设为 2GB):

JAVA_OPTS="-Xms256m -Xmx2048m -XX:MetaspaceSize=96m -XX:MaxMetaspaceSize=256m"

✅ 修改后,每次通过 standalone.shstandalone.bat 启动服务时,JVM 将自动应用新配置。

⚠️ 若使用 domain 模式,则应修改 domain.conf 或 domain 控制器中的 JVM 配置,本文不展开。


3. 使用环境变量覆盖配置

除了修改配置文件,还可以通过设置 环境变量 JAVA_OPTS 来动态指定 JVM 参数。这种方式优先级更高,会覆盖配置文件中的默认值。

Windows 系统

在命令行中执行:

set JAVA_OPTS=-Xms256m -Xmx1024m -Djava.awt.headless=true

然后启动 WildFly:

standalone.bat

Unix/Linux 系统

在终端中执行:

export JAVA_OPTS="-Xms256m -Xmx1024m -Djava.awt.headless=true"
./standalone.sh

验证是否生效

启动 WildFly 时,日志中会出现类似提示:

JAVA_OPTS already set in environment; overriding default settings with values ...

✅ 这说明环境变量已生效,配置文件中的 JAVA_OPTS 被成功覆盖。

💡 小技巧:可将 export JAVA_OPTS=... 写入 .bashrc 或启动脚本中,实现持久化设置(但注意不要与其他服务冲突)。


4. 总结

本文介绍了两种简单粗暴但非常实用的方式来调整 WildFly 的 JVM 堆内存:

  • 修改配置文件:适合固定环境,长期稳定运行
  • 设置环境变量:灵活方便,适合临时调试或 CI/CD 场景

📌 核心要点:

  • 修改 standalone.conf(或 .bat)中的 -Xms-Xmx
  • 使用 JAVA_OPTS 环境变量可动态覆盖配置
  • 日志中出现 overriding default settings 表示环境变量已生效

如果你还想了解其他 Java 应用服务器(如 Tomcat、Jetty、Payara)的内存调优技巧,可以参考我们之前的系列文章:Java 主流应用服务器对比与选型


原始标题:Increase Heap Memory for WildFly