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.sh
或 standalone.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 主流应用服务器对比与选型。