当缓存超出堆时,Ehcache确实依赖于Java Serialization。
但是,它只会序列化您放入缓存的内容。那么一些缓存的映射是否有可能具有如此巨大的价值甚至是关键?
Dominator树说你有一个Weblogic线程持有 ByteArrayOutputStream (和SerializerObjectOutputStream)。 Weblogic线程是当前正在处理请求的经典工作线程。目前它仍然存在。
ByteArrayOutputStream
所以,这相当于
ByteArrayOutputStream in = new ByteArrayOutputStream(); Thread.wait();
线程正在举行 ByteArrayOutputStream 并且它不能被垃圾收集,因为线程没有完成它。
看到序列化程序让我觉得你正在从Ehcache磁盘或offheap反序列化。
您是否有可能在缓存中放置相当大的对象?正如@ louis-jacomet所提到的那样。