Java内存泄露问题排查与解决
在处理一个Java内存泄露问题时,作者遇到了DirectBuffer飙升的问题,导致内存溢出。尽管进行了GC,DirectBuffer的占用并没有明显下降。作者首先排查了可能使用堆外内存的IO请求,但问题依旧存在。通过MAT工具分析内存dump,发现DirectByteBuffer主要由undertow的DefaultByteBufferPool$ThreadLocalCache引用。更换为Tomcat后问题解决。尽管作者在filter的ThreadLocal中写入用户信息,但AI表示没有影响。作者虽然解决了问题,但仍然好奇背后的原因,可能只有深入了解undertow的机制才能找到答案。
评论已关闭