在 CentOS 上运行 WebLogic 出现内存占用高,通常不是“系统问题”,而是 JVM + 应用 + 配置 共同导致的。下面按最常见原因 → 排查方法 → 解决建议来说明。
WebLogic 本质是 Java 应用,内存主要来自 JVM Heap。
常见配置:
-Xms2048m -Xmx4096m
问题:
top 看到的 RES 会很大✅ 检查:
ps -ef | grep java
看是否有 -Xmx、-XX:MaxMetaspaceSize
表现:
常见原因:
WebLogic 会加载大量类:
表现:
Metaspace 持续增长WebLogic 默认线程不少:
每个线程约 1MB 栈内存
-Xss512k 或 1m
线程 500+ 就很可观
包括:
这部分 top 能看到,但 JVM 看不到
CentOS 上很容易“看起来很吃内存”
free -m
top
重点看:
jstat -gc <pid>
关注:
jmap -histo:live <pid> | head
如果看到:
HashMapbyte[]基本就是应用问题
jmap -dump:format=b,file=heap.hprof <pid>
用:
-Xms2g -Xmx2g
-XX:MaxMetaspaceSize=512m
-Xss512k
⚠️ 不要盲目给大内存
WebLogic Console:
Environment → Servers → <Server> → Threads
<session-timeout>30</session-timeout>
CentOS 上 WebLogic 占内存高,本质不是 CentOS,而是:
- JVM 堆配置大
- 应用内存泄漏
- 线程 / 类加载多
- 多个应用共用 Domain
如果你愿意,可以贴:
ps -ef | grep javafree -m我可以直接帮你判断该调哪一块。