Если кто-нибудь когда-нибудь попадет сюда и изо всех сил пытается выяснить , что Растровое изображение переработано (как я сделал), вот что я в итоге сделал, чтобы устранить это:
1) Я поместил глобальный Thread.setDefaultUncaughtExceptionHandler
, который создает дамп кучи (на самом деле он уже был у меня для диагностики ошибок OOM). Код внутри обработчика такой:
File f = new File(Environment.getExternalStorageDirectory(),"oom-error.hprof");
String path = f.getAbsolutePath();
// force a few GC before dumping stuff
System.gc();
System.gc();
Debug.dumpHprofData(path);
2) Используя эту замечательную статью, вы можете узнать, как загрузить и проанализировать файл дампа hprof, используя MAT .
3) Внутри MAT я сначала отфильтровал классы по регулярному выражению «Bitmap», а затем искал идентификатор ссылки на Bitmap (в случае OP: «4384c218»). Это даст вам довольно хорошее представление о том, какой вид содержит этот переработанный растровый рисунок, и вы можете начать думать о его решении.
(В моем случае я перерабатывал изображения из общего кэша, некоторые из которых были отрисованными, которые также использовались в макетах XML и должны были быть «закреплены» в кэше до OnDestroy).