在 CentOS 上部署 WebLogic 时,内存设置主要通过 JVM 参数 来完成。下面按常见场景给你一个完整说明。
WebLogic 运行在 JVM 上,内存主要通过以下参数设置:
-Xms # 初始堆内存
-Xmx # 最大堆内存
-XX:MetaspaceSize
-XX:MaxMetaspaceSize
-Xms2048m
-Xmx2048m
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=512m
✅ 建议
-Xms和-Xmx设置成一样,避免堆动态扩容带来的性能抖动。
setDomainEnv.sh(最常用 ✅)路径示例:
$WL_HOME/user_projects/domains/base_domain/bin/setDomainEnv.sh
编辑该文件:
vi setDomainEnv.sh
找到类似内容(不同版本略有差异):
USER_MEM_ARGS="-Xms256m -Xmx512m"
修改为:
USER_MEM_ARGS="-Xms2048m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
保存后重启 WebLogic:
./stopWebLogic.sh
./startWebLogic.sh
startWebLogic.sh(不推荐)也可以在启动脚本中直接加:
export JAVA_OPTIONS="-Xms2048m -Xmx2048m"
但 优先级低于 setDomainEnv.sh,不建议长期使用。
如果是 生产环境,通常:
示例:
-Xms512m -Xmx1024m
-Xms4096m -Xmx4096m
可以在 setDomainEnv.sh 中根据 SERVER_NAME 判断:
if [ "$SERVER_NAME" = "AdminServer" ]; then
USER_MEM_ARGS="-Xms512m -Xmx1024m"
else
USER_MEM_ARGS="-Xms4096m -Xmx4096m"
fi
ps -ef | grep java
jcmd <pid> VM.flags
Environment → Servers → <Server> → Monitoring → JVM
free -h
swapon -s
ulimit -n
建议:
ulimit -n 65535
| WebLogic | JDK | 建议 |
|---|---|---|
| 12c | JDK 8 | 稳定 |
| 14c | JDK 11 | Metaspace |
Could not reserve enough space原因:
-Xmx 设置超过系统可用内存建议:
-XX:+UseG1GC
CentOS 上 WebLogic 内存设置,核心就是修改
setDomainEnv.sh里的USER_MEM_ARGS。
如果你能提供:
我可以帮你给出 最优内存配置方案。