增加JVM堆内存
修改Tomcat启动脚本catalina.sh
,添加或调整JAVA_OPTS
参数,例如:
-Xms1024m -Xmx2048m
(设置初始堆1GB、最大堆2GB,根据服务器内存调整)。
Java 8+需用-XX:MetaspaceSize
和-XX:MaxMetaspaceSize
替代永久代参数。
优化垃圾回收策略
启用G1垃圾收集器:-XX:+UseG1GC
,适合大内存场景。
添加GC日志参数分析内存回收情况:-XX:+PrintGCDetails -Xloggc:/path/to/gc.log
。
分析内存泄漏
生成堆转储文件:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump.hprof
,用Eclipse MAT等工具分析。
检查代码中未释放的资源(如数据库连接、文件流)或大对象缓存。
调整线程池配置
修改conf/server.xml
中Connector
的maxThreads
参数,减少并发线程数(默认200,可根据需求调整)。
升级Tomcat与JDK
使用最新稳定版Tomcat,修复已知内存问题;确保JDK版本与Tomcat兼容。
操作系统优化
调整Linux内核参数(如ulimit -n
增加文件描述符限制),优化内存分配策略。
操作步骤:
catalina.sh
调整JVM参数并重启Tomcat。参考来源: