Я получил ООМ. Я знаю, что этот вопрос уже охватывался многими предыдущими вопросами, но мой имеет отношение к внутренним компонентам Android и Java в целом.
Когда я загружаю изображения в случайных точках, я получаю это страшное исключение OOM.
У меня есть мои изображения в HashMap>. Из определения SoftReferences я бы ожидал, что Drawables будет GC'ed, если памяти недостаточно.
Напротив, из моего предыдущего исследования я вижу, что растровое изображение в drawable размещается в другой куче (собственной куче), чем куча моих приложений. Это объясняет, почему в DDMS, несмотря на то, что я вижу 6 МБ памяти, которую я использую, мое приложение по-прежнему падает.
Также кажется, что SoftReferences "идеальны" для кешей и рекомендуются для использования инженерами Android.
Мой вопрос таков: поскольку куча моего приложения никогда не достигает точки MAX, это должно означать, что мои SoftReferences никогда не обрабатываются GC.
Как я могу решить эту проблему? Есть ли тогда какая-то выгода от использования SoftReferences? Я что-то не правильно понимаю?
Спасибо!