-
增加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。 - 若问题持续,使用内存分析工具定位泄漏点,优化代码或配置。
- 确保服务器物理内存充足,必要时升级硬件。
参考来源:
以上就是关于“Ubuntu Tomcat日志中OutOfMemoryError怎么办”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm