Размер кучи Android на разных телефонах / устройствах и версиях ОС
Кто-нибудь знает, является ли размер кучи на телефонах Android постоянным значением в соответствии с тем, что установлено в версии ОС, или это настройка, которую могут выбрать производители телефонов?
Размер кучи пропорционален объему оперативной памяти телефона?
Я только нашел статьи, где люди говорят, что размер кучи приложения составляет 16M. Однако эти статьи немного устарели. Из того, что я вижу, в качестве примера, размеры кучи варьируются от 20 до 24 м в одной конкретной модели. Этот телефон имеет 768M оперативной памяти.
7 ответов
Кто-нибудь знает, является ли размер кучи на телефонах Android постоянным значением в соответствии с тем, что установлено в версии ОС, или это настройка, которую могут выбрать производители телефонов?
Технически, это настройка, с которой производители телефонов могут определиться. Android с открытым исходным кодом. Я не помню, чтобы в документе "Определение совместимости" были изложены требования к размеру кучи, хотя я не смотрел недавно.
Размер кучи пропорционален объему оперативной памяти телефона?
Нет, он, как правило, в большей степени основан на разрешении экрана, поскольку экраны с более высоким разрешением стремятся манипулировать большими растровыми изображениями, поэтому Google дает рекомендации по размеру кучи, которые, надеюсь, производители устройств будут соблюдать.
Я только нашел статьи, где люди говорят, что размер кучи приложения составляет 16M.
Поиск Stackru включен [android] "heap size"
поднимает этот ответ.
Еще немного информации об устройстве, извлеченной из файлов build.prop (adb -d pull /system/build.prop):
Телефоны (версия для Android):
- HTC Wildfire (2.2.1) = 16 МБ
- HTC Wildfire S (2.3.5) = 20 МБ
- HTC Salsa (2.3.3) = 20 МБ
- HTC Desire (2.3.3) = 32 МБ
- HTC Desire S (2.3.5) = 32 МБ
- Sprd - Richview - S111 (2.3.5) = 32 МБ
- Samsung Galaxy S GT-I9000 (2.2) = 48 МБ
- Samsung Galaxy R GT-I9103 (2.3.5) = 64 МБ
- Samsung Galaxy Y GT-S5360 (2.3.5) = 64 МБ
- Samsung Galaxy Note N7000 (4.1.2) = размер кучи = 8 м, ограничение по размеру кучи = 64 м, размер кучи = 256 м
- Samsung Galaxy S3 GT-I9300 (4,3, xhpdi) = 8/64/256 МБ
- Samsung Galaxy S4 GT-I9505 (4.4, xxhpdi) = 8/128/512 МБ
- Google Galaxy Nexus (4,3) = 8/96/256 МБ
- Google Nexus 4 (4.4, xhdpi) = 8/192/512 МБ
- Google Nexus 5 (4.4, xxhdpi) = 8/192/512 МБ
- Samsung Galaxy S6 SM-G920W8 (7,0) = 8/256/512 МБ
Планшеты (версия для Android):
- Samsung Galaxy Tab GT-P1000 (2.2) = 48 МБ
- Samsung Galaxy Tab 8,9 GT-P7300 (3,2) = 5/64/288 МБ
- Samsung Galaxy Tab 10.1 GT-P7500 (3.2) = 5/64/288 МБ
- Samsung Galaxy Tab 3 10,1 GT-P5200 (4,2, т / д) = 8/96/256 МБ
- 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 МБ
Не только производители телефонов, но и все, кто создает версию ОС 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
Вы должны быть в состоянии проверить максимальный размер кучи VM, используя:
getprop dalvik.vm.heapsize
на терминале Android (connectbot или adb shell и т. д.). Также можно перемонтировать чтение и запись и установить размер кучи в файле build.prop. (Убедитесь, что у вас установлено рекавери, чтобы вы могли переустановить его, если случайно сделаете его слишком маленьким, он не загрузится).
На самом деле существует определенный минимальный объем памяти приложения, который зависит от размера и плотности экрана:
Мобильные устройства обычно имеют ограниченные системные ресурсы. Устройства 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, и мы можем напрямую ссылаться на раздел оперативной памяти: https://source.android.com/compatibility/android-cdd.html
Для Android 2.3:
Реализации устройств с экранами, классифицированными как средние или с низкой плотностью, ДОЛЖНЫ конфигурировать Dalvik для выделения как минимум 16 МБ памяти для каждого приложения. Реализации устройств с экранами, классифицированными как высокоплотные или сверхплотные, ДОЛЖНЫ конфигурировать Dalvik для выделения как минимум 24 МБ памяти для каждого приложения. Обратите внимание, что реализации устройства МОГУТ выделять больше памяти, чем эти цифры.
Для современных версий вместо этого есть таблица, где это зависит от плотности экрана и т. Д.:
Для Android 4.2 пример строки из этой таблицы:
маленький / нормальный / большой размер и плотность xhdpi: 64 МБ
Для Android 6 извлеките:
маленький / нормальный xhdpi: 80 МБ
маленький / обычный xxhdpi: 128 МБ
маленький / обычный xxxhdpi: 256 МБ
В этих документах также есть таблица для других версий Android 2.x, 4.x, 5.x и 6 (см. Ссылку CDD выше).
Обратитесь к этой ссылке Google, чтобы легко найти плотность экрана и т. Д. Для конкретных устройств: https://design.google.com/devices/
"Бюджет виртуальной машины", который разрешено использовать приложению, зависит от устройства. Таблетки обычно позволяют больший бюджет, чем телефоны.
Вот некоторые размеры бюджета виртуальной машины, которые я нашел для различных устройств.
- G1 = 16 Мб
- Дроид = 24 Мб
- Nexus One = 32 Мб
- Xoom = 48 Мб
- GalaxyTab = 64 Мб.
(Примечание: если вы нашли по-другому, дайте мне знать)
Эти данные работают на меня. Выбрать Эмулятор Планшетный Android TV RAM 1536MB VM HEAP 16MB Внутренняя память 800MB Studio -Managed 100