在Tomcat日志中,内存泄漏的迹象可能包括以下几种情况:
频繁的Full GC:如果Tomcat频繁进行Full GC(全局垃圾回收),这通常表明内存中存在大量未被回收的对象,是内存泄漏的一个明显迹象。
回收效果不佳:在Full GC后,如果观察到老年代内存使用情况没有显著改善,或者回收量很小,这可能意味着存在内存泄漏。
回收耗时过长:长时间的Full GC会导致应用程序暂停(Stop The World),这是内存泄漏的另一个征兆。
堆转储分析:通过使用工具如jmap生成堆转储快照,并使用Eclipse Memory Analyzer (MAT)等工具分析,可以找出占用大量内存的对象。
内存使用持续增长:在应用程序运行过程中,如果观察到内存使用持续上升而没有下降的趋势,这可能是内存泄漏的迹象。
特定请求导致内存泄漏:通过监控localhost.log和访问日志,可以判断特定请求是否导致了内存泄漏。
ThreadLocal陷阱:ThreadLocal变量如果未被及时清理,会长期占用内存,导致内存泄漏。MAT可以帮助识别大量ThreadLocalMap的Entry引用了未释放的对象。