【发布时间】:2016-11-28 09:46:11
【问题描述】:
在 MAT 工具中分析堆转储后。泄密嫌疑人说 : “”加载的一个“java.util.TaskQueue”实例占用了680,207,896(82.39%)字节。 该实例被引用 org.apache.tomcat.util.threads.TaskThread @ 0xc1b52018 ajp-bio-8009-exec-243 ,由“java.net.URLClassLoader @ 0xce67a9b8”加载。内存在“”加载的“java.util.TimerTask[]”的一个实例中累积。
但我的问题是为什么这不是垃圾收集并且它积累了太多的内存。
【问题讨论】:
-
请任何人帮助我。谢谢提前。
-
嗨。你真的没有给我们太多的继续。看起来您可能在任务队列上放置了一些东西,由于某种原因,这些东西不是垃圾收集的。您是否保留对对象的任何引用?这将是寻找导致泄漏原因的第一个地方。
-
它没有被垃圾收集可能是因为在你的任务中的某个地方你正在泄漏引用,或者创建永远不会被 gced 的对象。我怀疑您通常还保留了一些硬 HashMap 或 Map,对吗?
-
谢谢。在 jmeter 压力测试后,我遇到了内存不足错误,然后我进行了堆转储,问题嫌疑人说由于 TaskQueue。我们没有从我们的代码中运行任何活动,但在内部它可能正在运行一个活动。但是我们要克服这个问题。
标签: java