堆内存是WebLogic存储对象实例的核心区域,其大小直接影响应用性能。需通过调整JVM参数设置初始堆内存(-Xms)和最大堆内存(-Xmx),避免频繁扩容导致的性能波动。通常建议:
-Xms)设置为最大堆内存(-Xmx)的1/4~1/3(如-Xms512m),减少启动时的内存分配开销;-Xmx)设置为服务器物理内存的70%~80%(需预留内存给操作系统及其他进程),例如服务器有16GB物理内存,-Xmx可设为10~12GB(-Xmx10240m)。bin/startWebLogic.sh脚本,添加export JAVA_OPTS="-Xms512m -Xmx1024m"(根据实际需求调整数值)。通过调整新生代(Young Generation)与老年代(Old Generation)的比例、Eden区与Survivor区的比例,优化垃圾回收(GC)效率:
-XX:NewRatio参数设置(如-XX:NewRatio=2表示新生代占堆内存的1/3,老年代占2/3),适用于大多数应用;-XX:SurvivorRatio参数设置(如-XX:SurvivorRatio=8表示Eden区占新生代的8/10,每个Survivor区占1/10),减少Minor GC次数。选择合适的垃圾回收器可显著提升内存管理效率。常见推荐:
-XX:+UseG1GC参数;-XX:+UseParallelGC参数。启用内存池(Memory Pool)可减少内存碎片,提高内存分配效率。在WebLogic的config.xml配置文件中添加内存池配置,例如:
<memory-management>
<memory-pool>
<name>MyMemoryPool</name>
<capacity>512m</capacity>
<持续增长>false</持续增长>
</memory-pool>
</memory-management>
其中capacity设置内存池大小,持续增长设为false避免无限制扩容。
定期监控内存使用情况是优化内存管理的关键:
free -m查看系统内存使用状况(总内存、已用、剩余、Swap使用量);使用top/htop找出占用内存高的进程(如WebLogic进程);http://服务器IP:7001/console)的“监控”模块查看堆内存使用、GC次数及耗时;使用jconsole/VisualVM等工具分析内存泄漏(如对象堆积)。调整操作系统内核参数,配合WebLogic内存管理:
/etc/sysctl.conf文件中的vm.swappiness参数(取值0~100,值越小越倾向于使用物理内存),例如设置为vm.swappiness=10(减少Swap使用,提升性能);dd if=/dev/zero of=/swapfile bs=1M count=2048创建2GB Swap文件,然后mkswap /swapfile、swapon /swapfile启用)。开发模式与产品模式的默认参数不同,需根据环境调整:
Execute Queue的max-threads)默认为15,堆内存可设置较小(如-Xms512m -Xmx1024m),满足快速开发和调试需求;-Xms2048m -Xmx4096m),确保高并发下的稳定性。