Tomcat 占用内存高,通常不是“Tomcat 本身”吃内存,而是运行在 Tomcat 上的 Java 应用 + JVM 配置 + 使用方式共同导致的。下面按常见原因系统说明:
Tomcat 本质是 Java 进程,内存主要来自 JVM:
-Xms(初始堆)-Xmx(最大堆)如果设置了:
-Xmx4g
那 Tomcat 最多就会用到 4G 堆内存,看起来“占用很高”。
✅ 检查方式:
ps -ef | grep tomcat
jmap -heap <pid>
典型表现:
常见泄漏点:
static 集合缓存无限增长✅ 排查工具:
jmap -histo:live <pid>每个请求都会:
线程数 × 单线程栈(-Xss)也会吃内存:
-Xss512k
✅ 高并发场景下:
都会迅速推高内存
以下情况会增加 Metaspace / PermGen:
✅ 现象:
✅ 建议:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
除了堆内存,还有:
这些不显示在堆里,但占用系统内存
top
jstat -gc <pid>
jmap -heap <pid>
jmap -histo:live <pid> | head
-Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m
<Connector
maxThreads="200"
acceptCount="100" />
autoDeploystatic Map仅用于缓解,不治本
Tomcat 内存高,90% 是应用问题,不是 Tomcat 问题。
如果你愿意,可以告诉我:
我可以帮你精准定位是哪一类问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。