Я пытался диагностировать утечку памяти в приложении для Android, которое я пишу.Я загрузил дамп кучи в Eclipse, но результаты, которые я вижу, очень любопытны.Существует около 20 000 экземпляров исключения (в частности, LDAPException из библиотеки UnboundID LDAP) в куче без входящих ссылок.
То есть они отображаются в корне дерева доминирования.OQL SELECT objects e FROM com.unboundid.ldap.sdk.LDAPException e WHERE (inbounds(e).length = 0)
возвращает более 20 000 результатов, что составляет почти всю кучу.И все же GC запускается перед дампом кучи, и я вижу, что он неоднократно запускается в консоли во время выполнения кода с утечкой.Если эти экземпляры не имеют входящих ссылок, что может их поддерживать?
Я также попытался выполнить запрос "кратчайшие пути к ГХ".Он показывает одну строку LDAPConnectionReader, сохраняющую 2 экземпляра, и ~ 20k LDAPException @ <addr> unknown
строк с различными шестнадцатеричными адресами.
Обновление : у меня не было времени для дальнейшей диагностики этого с момента публикации,щедрость, которую я отправил, заканчивается прежде, чем я, вероятно, буду.Я награждаю его как можно лучше, чтобы очки не пропали даром.Спасибо всем, кто заглянул в это!Я вернусь позже и обновлю результаты дальнейшего диагноза, когда жизнь станет немного менее беспокойной.