Я пытаюсь отладить приложение, которое висит. Программа использует очередь, реализованную с LinkedList
, и во время стресс-тестирования я обнаружил, что программа перестает отвечать из-за нехватки памяти кучи. Я проанализировал дамп кучи и обнаружил, что память, похоже, протекает с LinkedList
.LinkedList Memory Leak
Соответствующая часть дампа кучи:
▶java.net.Vectior @ 0xff5eacd0
▶▶java.util.Vector @ 0xff629f30
▶▶▶java.lang.Object[1280] @ 0xff629f50
▶▶▶▶class com.itnade.vsm.staticobject.TrapQueue @ 0xff6b23e8
▶▶▶▶▶java.util.LinkedList @ 0xff6b2460
▶▶▶▶▶▶java.util.LinkedList$Node @ 0xfb954560
▶▶▶▶▶▶java.util.LinkedList$Node @ 0xfb959968
▶▶▶▶▶▶java.util.LinkedList$Node @ 0xfb95ede8
▶▶▶▶▶▶java.util.LinkedList$Node @ 0xfb964230
▶▶▶▶▶▶java.util.LinkedList$Node @ 0xfb969638
...
...
Как вы можете видеть из дампа, то LinkedList$Node
s не удаляются, а накапливаются.
Общий поток программы:
Queue.offer() → → Queue.poll Queue.remove (объект)
Почему LinkedList
по всей видимости, утечка памяти и как я могу предотвратить это?
Пожалуйста, предоставьте соответствующий код для репликации проблемы и более подробной информации об окружающей среде: какая версия Java, какая ОС, аргументы, используемые для выполнения Java-приложения, и ... –