解决CentOS上Tomcat内存溢出可从以下方面入手:
调整JVM参数
catalina.sh(或setenv.sh),设置堆内存参数:-Xms(初始堆大小)和-Xmx(最大堆大小),建议设为相同值且不超过物理内存70%,如-Xms1024m -Xmx1024m。-XX:MaxMetaspaceSize=256m(默认无限制,易导致溢出)。-XX:+UseG1GC,减少GC停顿。优化应用程序
jmap生成堆转储文件,通过MAT或VisualVM分析泄漏点。监控与调优
jstat监控GC情况,若频繁Full GC需调整内存或优化代码:jstat -gcutil <pid> 1000。jstack分析线程状态,排查线程阻塞或死锁问题。硬件与配置调整
conf/server.xml中maxThreads参数。其他措施
ulimit -n查看并调整/etc/security/limits.conf。关键参数参考:
-XX:PermSize和-XX:MaxPermSize(已废弃,Java 8+用元空间替代)。-XX:MetaspaceSize和-XX:MaxMetaspaceSize,默认无限制需手动设置。操作前建议在测试环境验证配置,避免影响生产环境。