Я знаю, что есть 2-3 темы по этому поводу, были проблемы с FinalizerReference
, но это все еще не объяснил хорошо. У меня есть вопрос об этом классе и как все в нем работает.
Независимо от того, что я делаю в своем приложении, FinalizerReference
всегда сохраняет 5-10 RAM
для себя, и мой вопрос:
это нормальное поведение, о котором мне не о чем беспокоиться?
Как я знаю, объекты Java освобождаются, но "указатели" остаются в памяти и очищаются с помощью следующего GC (также как и обычные объекты, очищенные с помощью GC, без ссылки на него).
Для меня это немного не так, потому что, если у меня есть ~ 64 МБ ОЗУ для использования с моим приложением и 10 МБ потрачены впустую - должна быть проблема.
Я проверил все это, удалил все утечки, которые у меня были, и в настоящее время мое приложение остается на 18 ~ МБ ОЗУ (7 ОЗУ - графика, 2 ОЗУ - объекты). Остальное - FinalizerReference
; /
вот скрин из этого экземпляра:
и вот мой монитор памяти (он остается в таком виде в течение 30 минут):
Кроме того, на панели "Экземпляры" имеется 50 записей, включая ~ 5 из моего кода и библиотек, которые я использую. Остальное от Android - InputManager, Parcels, Proxies и т.д.
редактировать
Это происходит на Galaxy S5. В эмуляторе Android я получаю ~ 2 МБ от FinalizerReference