2012-03-07 1 views
5

У меня очень простое приложение для Android, состоящее из одного действия с некоторыми текстовыми полями и немного кода обработки.Почему приложение для Android выделяет существенно разные объемы памяти для разных версий ОС?

Когда я устанавливаю его на устройство 2.3 и открываю его в первый раз, он выделяет ~ 2,7 МБ памяти (согласно вкладке «Обновление кучи» в Eclipse DDMS).

На устройстве 3.1 он выделяет ~ 6,1 МБ.

На устройстве 4.0 он выделяет ~ 13,8 МБ.

Я не делал никаких изменений кода между 3, и эти меры были приняты при первоначальной установке/открытии приложения (поэтому у него не было времени на утечку). Он не использует изображения и не поддерживает аппаратное ускорение.

Кто-нибудь знает, почему следы могут сильно отличаться? Я предполагаю, что это связано с различиями в версиях ОС, но мне интересно, знает ли кто, какие эти различия могут быть.

Я ознакомился с изменениями в распределении битмапа от 3,0 и далее, что вызвало очевидное увеличение выделенной памяти, но мое приложение не использует никаких изображений. Он состоит только из нескольких полей EditText и TextViews.

+0

Можете ли вы использовать Memory Analyzer, чтобы получить подробную информацию и сравнить распределения? – Asahi

ответ

1

Предварительно сотовые растровые изображения были выделены в нативной куче. Начиная с Android 3.0 (включая ICS) данные пикселов для растровых изображений выделяются в куче Dalvik. Из-за этого может быть разница между 2,3 и 3,1.

ICS действительно использует память, нежели 3.1, и я не знаю причину этого.

+0

Я читал о растровых изображениях, но мое приложение вообще не использует никаких изображений. Он имеет только поля TextViews и EditText. Хотя я предполагаю, что они могут быть отображены с использованием растровых изображений, внутренних для ОС? Тем не менее это не объясняет переход от 3.1 до 4.0. – mWillis

Смежные вопросы