Люди, я не думаю, что это дубликат и НЕ является одним из них, как мне избежать вопросов OOMs. Это настоящий квест для знания, поэтому держись на этих голосах, пожалуйста...
Представьте, что у меня есть JPEG
из 500x500
пикселей. Я загружаю его как ARGB_8888
, который является "bad as it gets
".
Я ожидал бы, что Android выделит 500x500x4 bytes = a little under 1MB
, но посмотрите на кучу кучи, и вы увидите, что Android выделяет значительно больше, часто коэффициенты 5-10
раз больше.
Вы часто видите здесь вопросы о OOMS, где трассировка стека показывает heap request of say 15MB
, и она Всегда намного больше, чем требуется просто удерживайте байты изображения. OP обычно улавливает некоторые downvotes, а затем обманывает запасные ответы и комментарии об использовании меньше памяти (спасибо Romain!) И в масштабировании. Я думаю, что здесь больше, чем кажется.
Кто-нибудь знает, почему это?
Если нет явного ответа, я соберу SSCCE, если это поможет.
PS. Я предполагаю, что JPEG против PNG и т.д. Не имеет значения, так как мы говорим об использовании памяти обратного растрового изображения, которое просто x раз y раз BPP - или я медленный?