Tomcat日志中内存溢出的解决方案
1. 诊断内存溢出根源
首先, 得借助日志以及工具定位内存溢出的具体型类。这具体型类呢, 是堆内存、元空间、栈内存或者线程溢出当中的某一种。查明Tomcat日志(catalina.out、localhost.log)里头的OutOfMemoryError信息, 像“Java heap space”的意思是堆内存不够, “PermGen space”(Java 7及以前时期)或是“Metaspace”(Java 8及以上版本)意味着元空间欠缺, “StackOverflowError”代表栈内存溢出。与此同时, 运用JVM监控工具, 像是jconsole、jvisualvm、YourKit, 去监控内存使用趋向,剖析究竟是突发峰值致使内存耗尽, 还是持续增长造成内存耗尽。
2. 调整JVM内存参数
依照诊断得出的结果, 对Tomcat的JVM启动参数予以调整, 将内存空间进行合理的分配。
3. 优化应用程序代码

代码里存在的内存泄漏, 或者不规范的操作, 乃内存溢出常见的原因, 需要重点去排查。
4. 调整垃圾回收策略
能够提升内存回收效率, 减少内存溢出风险的, 是合理的垃圾回收 GC 配置。
5. 配置Tomcat线程池和连接池
线程和连接池的不合理配置会导致内存占用过高:
6. 定期重启与监控