linux

Tomcat在Linux如何解决内存溢出

小樊
32
2025-12-20 20:03:38
栏目: 智能运维

Linux下Tomcat内存溢出定位与解决

一、快速定位与日志确认

二、按异常类型调整JVM参数

异常类型 典型触发 关键参数(Linux catalina.sh 中的 JAVA_OPTS) 备注
Java heap space 对象过多、缓存膨胀、大文件/批量处理 -Xms-Xmx 设为相同,如 -Xms2g -Xmx2g;可按需设置新生代 -Xmn(如约为 -Xmx 的 1/4 建议不超过物理内存的70%~80%,避免与系统和其他进程争用
PermGen space(Java 7 及以前) 类/类加载器泄漏、JSP 预编译、依赖 JAR 多 -XX:PermSize=… -XX:MaxPermSize=…,如 -XX:PermSize=256m -XX:MaxPermSize=512m Java 8 起已废弃,改用 Metaspace
Metaspace(Java 8+) 同上,但发生在元空间 移除 PermSize/MaxPermSize;新增 -XX:MaxMetaspaceSize=…,如 -XX:MaxMetaspaceSize=512m 默认无上限,建议设置上限并结合监控
unable to create new native thread 线程数过多、栈过大、系统/容器限制 降低 -Xmx-Xss,减少线程栈占用;提升 ulimit -u(max user processes)与 -n(open files);优化应用并发模型 线程上限估算:(MaxProcessMemory − JVMMemory − ReservedOsMemory) ÷ ThreadStackSize

三、系统层面与Tomcat配置优化

四、监控、验证与代码侧治理

0
看了该问题的人还看了