Как отладить утечку памяти, когда экземпляры исключений в дампе кучи не имеют входящих ссылок?

Я пытался диагностировать утечку памяти в приложении для Android, которое я пишу. Я загрузил дамп кучи в Eclipse, но результаты, которые я вижу, очень любопытны. Существует около 20 000 экземпляров исключения (в частности, LDAPException из библиотеки UnboundID LDAP) в куче без входящих ссылок.

То есть они отображаются в корне дерева доминирования. Объекты OQL SELECT e FROM com.unboundid.ldap.sdk.LDAPException e WHERE (inbounds (e). length = 0) возвращает более 20 000 результатов, что составляет почти всю кучу. И все же GC запускается перед дампом кучи, и я вижу, что он неоднократно запускается в консоли во время выполнения кода с утечкой. Если эти экземпляры не имеют входящих ссылок, что могло бы их поддерживать?

Я также попытался выполнить запрос «кратчайшие пути к GC». Он показывает одну строку LDAPConnectionReader, сохраняющую 2 экземпляра, и ~ 20k строк LDAPException @ unknown с различными шестнадцатеричными адресами.

Обновление : у меня не было времени для дальнейшей диагностики этого с момента публикации это, и щедрость, которую я отправил, заканчивается прежде, чем я, вероятно, буду. Я награждаю его как можно лучше, чтобы очки не пропали даром. Спасибо всем, кто заглянул в это! Я вернусь позже и обновлю результаты дальнейшего диагноза, когда жизнь станет немного менее беспокойной.

6
задан Walter Mundt 14 September 2010 в 06:28
поделиться