setDomainEnv.sh文件(核心JVM内存参数设置)setDomainEnv.sh是WebLogic域级别的启动脚本,用于定义JVM堆内存、元空间等核心参数,是调整内存的主要入口。
$DOMAIN_HOME/bin/setDomainEnv.sh(如/home/weblogic/Middleware/user_projects/domains/base_domain/bin/setDomainEnv.sh)。-Xms:JVM初始堆内存大小(如-Xms1024m表示初始分配1GB);-Xmx:JVM最大堆内存大小(如-Xmx2048m表示最大允许使用2GB);-XX:MaxMetaspaceSize(Java 8+替代-XX:MaxPermSize):元空间最大大小(如-XX:MaxMetaspaceSize=256m)。setDomainEnv.sh中找到WLS_MEM_ARGS相关段落(通常在文件中下部),修改为以下内容(根据环境选择生产/开发模式):if [ "$JAVA_VENDOR" = "Sun" ] || [ "$JAVA_VENDOR" = "Oracle" ]; then
# 生产模式:分配更大内存
export WLS_MEM_ARGS_64BIT="-Xms2048m -Xmx4096m -XX:MaxMetaspaceSize=512m"
export WLS_MEM_ARGS_32BIT="-Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=256m"
else
# 非Sun/Oracle JDK(如OpenJDK),参数类似
export WLS_MEM_ARGS_64BIT="-Xms2048m -Xmx4096m"
export WLS_MEM_ARGS_32BIT="-Xms1024m -Xmx2048m"
fi
export WLS_MEM_ARGS=$WLS_MEM_ARGS_64BIT # 默认使用64位模式
-Xms和-Xmx建议设置为相同值,避免堆内存动态扩展带来的性能损耗;-XX:MaxMetaspaceSize需根据应用元数据量调整(如Spring Boot应用建议≥256m)。startWebLogic.sh文件(补充JVM参数)startWebLogic.sh是启动WebLogic服务器的入口脚本,可在其中添加额外的JVM参数(如GC策略、线程栈大小等)。
$DOMAIN_HOME/startWebLogic.sh。JAVA_OPTIONS定义之后)添加以下内容:export JAVA_OPTIONS="$JAVA_OPTIONS -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=35"
-XX:+UseG1GC:启用G1垃圾收集器(适合大内存、低延迟场景);-XX:MaxGCPauseMillis=200:设置最大GC停顿时间为200毫秒;-XX:InitiatingHeapOccupancyPercent=35:当堆内存使用率达35%时触发并发GC周期。若不想修改脚本文件,可通过WebLogic管理控制台动态调整内存参数(需管理员权限)。
http://<服务器IP>:7001/console(默认端口7001);-Xms)和“最大堆大小”(对应-Xmx);修改完成后,需重启WebLogic服务器(./stopWebLogic.sh → ./startWebLogic.sh),并通过以下方式验证:
$DOMAIN_HOME/servers/<服务器名称>/logs/<服务器名称>.log,搜索-Xms、-Xmx等参数,确认是否加载了修改后的值;jconsole(JDK自带),连接WebLogic进程,查看“内存”标签页中的“堆内存”使用情况,确认初始/最大内存是否符合设置;-Xmx(最大堆内存)不应超过物理内存的70%(避免系统内存不足导致OOM);-Xms(初始堆内存)建议≥-Xmx的50%(减少堆扩展次数);-Xmx最大支持1.8GB(受限于地址空间);64位JDK无此限制,但需确保操作系统支持大内存;-XX:MaxMetaspaceSize需根据应用元数据量调整(如大量使用反射、动态代理的应用需增大该值),避免OutOfMemoryError: Metaspace错误;-XX:+UseG1GC),适合大内存、低延迟场景;若使用CMS收集器(-XX:+UseConcMarkSweepGC),需调整-XX:CMSInitiatingOccupancyFraction(触发CMS GC的堆占用率)。通过以上步骤,可完成CentOS环境下WebLogic内存设置的调整,优化应用性能并避免内存相关问题。