Размер кучи Android на разных телефонах/устройствах и версиях ОС
Кто-нибудь знает, является ли размер кучи на телефонах Android постоянным значением в соответствии с тем, что установлено в версии ОС, или если это параметр, который могут выбрать производители телефонов?
Является ли размер кучи пропорциональным количеству ОЗУ на телефоне?
Я только нашел статьи, где люди говорят, что размер кучи приложения составляет 16 М. Однако эти статьи немного устарели. Из того, что я вижу, в качестве примера, размеры кучи варьируются от 20 М до 24 М на одной конкретной модели. Этот телефон имеет 768M оперативной памяти.
Ответы
Ответ 1
Кто-нибудь знает, является ли размер кучи на телефонах Android постоянным значением в соответствии с тем, что установлено в версии ОС, или если это параметр, который могут выбрать производители телефонов?
Технически это настройка, которую могут решить производители телефонов. Android - с открытым исходным кодом. Я не помню, что документ определения совместимости, определяющий требования к размеру кучи, хотя я не смотрел недавно.
Является ли размер кучи пропорциональным количеству ОЗУ на телефоне?
Нет, он, как правило, больше основан на разрешении экрана, поскольку экраны с более высоким разрешением, как правило, хотят манипулировать большими растровыми изображениями, поэтому Google предлагает рекомендации по размеру кучи, которые, надеюсь, будут соблюдаться производителями устройств.
Я только нашел статьи, где люди говорят, что размер кучи приложения составляет 16 М.
Поиск StackOverflow на [android] "heap size"
вызывает этот ответ.
Ответ 2
Дополнительная информация об устройстве, извлеченная из файлов build.prop(adb -d pull/system/build.prop):
Телефоны (версия Android):
- HTC Wildfire (2.2.1) = 16MB
- HTC Wildfire S (2.3.5) = 20MB
- HTC Salsa (2.3.3) = 20MB
- HTC Desire (2.3.3) = 32MB
- HTC Desire S (2.3.5) = 32MB
- Sprd - Richview - S111 (2.3.5) = 32MB
- Samsung Galaxy S GT-I9000 (2.2) = 48 МБ
- Samsung Galaxy R GT-I9103 (2.3.5) = 64MB
- Samsung Galaxy Y GT-S5360 (2.3.5) = 64MB
- Samsung Galaxy Note N7000 (4.1.2) = heapstartsize = 8m, heapgrowthlimit = 64m, heapsize = 256m
- Samsung Galaxy S3 GT-I9300 (4.3, xhpdi) = 8/64/256MB
- Samsung Galaxy S4 GT-I9505 (4.4, xxhpdi) = 8/128/512MB
- Google Galaxy Nexus (4.3) = 8/96/256MB
- Google Nexus 4 (4.4, xhdpi) = 8/192/512MB
- Google Nexus 5 (4.4, xxhdpi) = 8/192/512MB
- Samsung Galaxy S6 SM-G920W8 (7.0) = 8/256/512MB
Таблетки (версия Android):
- Samsung Galaxy Tab GT-P1000 (2.2) = 48 МБ
- Samsung Galaxy Tab 8.9 GT-P7300 (3.2) = 5/64/288MB
- Samsung Galaxy Tab 10.1 GT-P7500 (3.2) = 5/64/288MB
- Samsung Galaxy Tab 3 10.1 GT-P5200 (4.2, mdpi) = 8/96/256MB
- Acer Iconia A500 (3.2.1) = 5/48/256MB
- Kindle Fire HD 7 "(4.0.3) = 5/48/256MB
- Asus Transformer Prime TF201 (4.1.1) = 5/48/256MB
- Nexus 10 (4.4.3) 16/192/512 МБ
Ответ 3
Не только производители телефонов, но и все, кто создает версию ОС Android, могут указывать максимально допустимый размер кучи на основе конкретных требований своих устройств. Некоторые корни Android, такие как CyanogenMod, даже позволяют пользователю самостоятельно выбирать размер кучи в качестве параметра.
Вы можете определить максимальный разрешенный размер кучи, используя метод
Runtime.getRuntime().maxMemory();
Дополнительная информация по этой теме доступна здесь.
Если вашему приложению обычно требуется более 16 МБ кучи, предлагаемый подход заключается в том, чтобы установить минимальный уровень версии ОС в вашем манифесте, который гарантирует, что подавляющее большинство тех, кто загружает ваше приложение, будет иметь как минимум необходимую сумму, а затем найдите способ изящно деградировать свои функции таким образом, чтобы снизить требования к куче по мере необходимости, вплоть до базового уровня 16 МБ, для небольшого числа пользователей с меньшим, чем ваше оптимальное количество кучи, которые проваливаются через это сито.
Вот некоторые цифры, показывающие связь ОЗУ телефона с версией ОС (на основе текущей, а не оригинальной ОС). Я считаю, что у телефона, имеющего как минимум 1 ГБ оперативной памяти, почти всегда будет больше 16 МБ кучи. Обратите внимание, что здесь проценты для количества моделей телефонов, поддерживающих указанную память, а не для общего количества используемых телефонов, которые могут быть сильно искажены по отношению к определенным моделям. Эти цифры были получены путем подключения входных данных к следующему телефонному поисковому устройству (который включает в себя 1500 моделей телефонов Android) и поэтому являются только приблизительными цифрами: http://www.gsmarena.com/search.php3
Процент моделей телефонов, имеющих не менее 1 ГБ ОЗУ, по текущей версии ОС (не версия при запуске):
Phones running Percent of models having at least 1GB of RAM Percentage of all models
4.4 and up 100 percent 1.5
4.3 and up 100 percent 2.9
4.2.x and up 74 percent 18.7
4.1.x and up 71 percent 37
4.0 and up 62 percent 60
2.3.x and up 57 percent 71
2.2 and up 44 percent 93
2.1 and up 44 percent 97
ALL OS VERSIONS: 41.5 percent 100
Ответ 4
"Бюджет VM", который разрешено использовать приложениям, варьируется от устройства к устройству. Таблетки обычно позволяют увеличить бюджет, чем телефоны.
Вот некоторые размеры бюджета VM, которые я нашел для различных устройств.
- G1 = 16 МБ
- Droid = 24 МБ
- Nexus One = 32 МБ
- Xoom = 48 МБ
- GalaxyTab = 64 Мб.
(Примечание: если вы нашли по-другому, дайте мне знать)
Ответ 5
Вы должны иметь возможность проверить max vm heapsize, используя:
getprop dalvik.vm.heapsize
на терминале Android (соединительный модуль или оболочка adb и т.д.). Можно перемонтировать read-write и установить размер кучи в файле build.prop. (Убедитесь, что у вас установлено восстановление, поэтому вы можете повторно установить его, если вы случайно сделаете его слишком маленьким, он не загрузится).
Ответ 6
На самом деле существует определенная минимальная память приложения, которая зависит от размера экрана и плотности:
Мобильные устройства обычно имеют ограниченные системные ресурсы. Android устройства могут иметь всего 16 МБ памяти для одного выражение. Документ определения совместимости Android (CDD), Раздел 3.7. Совместимость виртуальной машины дает необходимый минимум память приложений для различных размеров экрана и плотности. Приложения должны быть оптимизированы для работы в этой минимальной памяти предел. Однако имейте в виду, что многие устройства настроены с более высоким пределы.
Цитата из: http://developer.android.com/training/displaying-bitmaps/index.html
Но, как утверждают другие, каждый производитель устройства решает фактическое значение для устройства, поэтому он может быть больше этого (но не меньше).
В упомянутом документе определения совместимости (CDD) перечислены минимальные требования для каждой версии android:
https://source.android.com/compatibility/cdd.html
Для последней версии Android существует доступная версия html verison, и мы можем напрямую ссылаться на раздел памяти во время работы:
https://source.android.com/compatibility/android-cdd.html#3_7_runtime_compatibility
Для Android 2.3:
Реализации устройств с экранами, классифицированными как средние или низкая плотность ДОЛЖНА настроить Dalvik на размещение не менее 16 МБ памятидля каждого приложения. Реализации устройств с экранами, классифицированными как высокая плотность или сверхвысокая плотность ДОЛЖНЫ настраивать Dalvik для распределения не менее 24 МБ памяти для каждого приложения. Обратите внимание, что устройство реализации МОГУТ выделять больше памяти, чем эти цифры.
Для современных версий вместо таблицы есть таблица, где она зависит от плотности экрана и т.д.:
Для Android 4.2, пример строки из этой таблицы:
малый/нормальный/большой размер и плотность xhdpi: 64 МБ
Для Android 6 извлеките:
small/normal xhdpi: 80MB
small/normal xxhdpi: 128 МБ
small/normal xxxhdpi: 256 МБ
В этих документах есть таблица для других версий Android 2.x, 4.x, 5.x и 6 (см. ссылку CDD выше).
Обратитесь к этой ссылке google, чтобы легко находить плотность экрана и т.д. для определенных устройств:
https://design.google.com/devices/
Ответ 7
Эти данные работают на меня.
Выберите эмулятор Tablet Android TV
RAM 1536MB
VM HEAP 16MB
Внутреннее хранилище 800 МБ
Студия, управляемая 100