WebLogic作为Java应用服务器,其内存管理主要依赖JVM堆内存配置。需通过修改启动脚本(如setDomainEnv.sh,位于Middleware/user_projects/domains/your_domain/bin/目录下)设置以下参数:
-Xms(初始堆大小):设置为与-Xmx相同的值(如-Xms2048m),避免堆内存动态调整带来的性能开销。-Xmx(最大堆大小):根据服务器物理内存和WebLogic应用负载确定,建议不超过物理内存的70%(如8GB物理内存可设置为-Xmx6144m)。-XX:NewRatio):新生代(Young Generation)用于存储新创建的对象,老年代(Old Generation)用于存储长期存活的对象。建议设置为-XX:NewRatio=2(新生代占堆内存的1/3),适合大多数Web应用(短生命周期对象多)。-XX:SurvivorRatio):Eden区用于存储新创建的对象,Survivor区(S0、S1)用于存储经过Minor GC后存活的对象。建议设置为-XX:SurvivorRatio=8(Eden区占新生代的8/10),平衡GC频率与内存利用率。setDomainEnv.sh中添加到MEM_ARGS变量中,例如:export MEM_ARGS="-Xms2048m -Xmx2048m -XX:NewRatio=2 -XX:SurvivorRatio=8"
-XX:MaxMetaspaceSize替代传统的-XX:MaxPermSize(已弃用),设置元空间最大大小(元空间用于存储类元数据)。建议设置为-XX:MaxMetaspaceSize=256m(可根据应用类数量调整,避免元空间溢出)。-XX:MaxPermSize,设置永久代最大大小(如-XX:MaxPermSize=256m)。MEM_ARGS变量)。若服务器物理内存有限,可通过创建Swap文件扩展虚拟内存,避免WebLogic因内存不足崩溃:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
/swapfile none swap sw 0 0添加到/etc/fstab文件中。WebLogic的线程池用于处理客户端请求,线程过多会增加内存占用(每个线程需分配栈内存)。需通过管理控制台调整:
weblogic.kernel.default队列)。100),避免线程过多导致内存溢出。通过GC日志分析内存使用情况,定位内存泄漏或GC频繁问题:
setDomainEnv.sh中添加以下参数,开启GC日志:export MEM_ARGS="$MEM_ARGS -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/gc.log"
Full GC频繁或老年代内存占用过高,需调整堆内存大小或新生代比例。systemctl list-units --types service查看系统中运行的服务,关闭非必需服务(如apache2、mysql等,若未使用)。top或htop命令查看占用内存较高的进程,终止无用的进程(如kill -9 PID)。free -m命令查看系统内存使用情况(重点关注used和available列)。以上措施需结合WebLogic版本、Debian系统环境及应用负载进行调整,修改配置后需重启WebLogic服务使参数生效。