Размер кучи 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

Другие вопросы по тегам