Tomcat 占用内存高,通常不是单一原因,而是JVM 配置 + 应用行为 + 外部资源共同作用的结果。下面从常见原因到排查思路系统说明。
Tomcat 本身内存占用主要取决于 JVM 堆(Heap)
常见配置问题:
-Xms 和 -Xmx 设置过大-Xms2g -Xmx4g
即使不用,JVM 也会“占着”内存-Xmx,没设 -Xms✅ 建议:
-Xms512m -Xmx1024m
根据真实负载调整
典型问题:
static 集合不断添加对象表现:
✅ 排查:
jmap -histo:live <pid>
看哪些类实例异常多
<session-config>
<session-timeout>30</session-timeout>
</session-config>
✅ 建议:
默认连接器线程可能很多:
<Connector port="8080"
maxThreads="200"
minSpareThreads="50" />
每个线程 ≈ 1MB 栈内存
✅ 建议:
会导致:
✅ 建议:
-XX:MaxMetaspaceSize=256m
包括:
尤其:
✅ 可限制:
-XX:MaxDirectMemorySize=256m
top / htop # RES 内存
jstat -gc <pid> # GC 情况
jmap -heap <pid> # 堆使用
判断标准:
-Xmx 是否过大?如果你愿意,可以告诉我:
我可以帮你精准定位是哪一类问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。