Размер кучи Android на разных телефонах / устройствах и версиях ОС

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

Является ли размер кучи пропорциональным количеству ОЗУ на телефоне?

Я только нашел статьи, где люди говорят, что размер кучи приложения составляет 16 миллионов. Однако эти статьи немного устарели. Из того, что я вижу, в качестве примера, размеры кучи варьируются от 20 М до 24 М на одной конкретной модели. Этот телефон имеет 768M оперативной памяти.

Solutions Collecting From Web of "Размер кучи Android на разных телефонах / устройствах и версиях ОС"

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

Технически это настройка, которую могут принять производители телефонов. Android – с открытым исходным кодом. Я не помню, что в документе определения совместимости указаны требования к размеру кучи, хотя я не смотрел недавно.

Является ли размер кучи пропорциональным количеству ОЗУ на телефоне?

Нет, он, как правило, больше основан на разрешении экрана, поскольку экраны с более высоким разрешением, как правило, хотят манипулировать большими растровыми изображениями, поэтому Google делает рекомендации по размеру кучи, которые, надеюсь, будут соблюдаться производителями устройств.

Я только нашел статьи, где люди говорят, что размер кучи приложения составляет 16 миллионов.

Поиск StackOverflow на [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) = 32MB
  • 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) = 64MB
  • Samsung Galaxy Note N7000 (4.1.2) = heapstartsize = 8m, heapgrowthlimit = 64m, heapsize = 256m
  • Samsung Galaxy S3 GT-I9300 (4.3, xhpdi) = 8/64/256 МБ
  • Samsung Galaxy S4 GT-I9505 (4.4, xxhpdi) = 8/128 / 512MB
  • Google Galaxy Nexus (4.3) = 8/96/256 МБ
  • 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/256 МБ
  • Acer Iconia A500 (3.2.1) = 5/48/256 МБ
  • 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», который разрешено использовать приложениям, варьируется от устройства к устройству. Таблетки обычно позволяют увеличить бюджет, чем телефоны.

Вот некоторые размеры бюджета VM, которые я нашел для различных устройств.

  • G1 = 16 Мб
  • Droid = 24 Мб
  • Nexus One = 32 Мб
  • Xoom = 48 Мб
  • GalaxyTab = 64 Мб.

(Примечание: если вы нашли по-другому, дайте мне знать)

Вы должны уметь проверять max vm heapsize, используя:

 getprop dalvik.vm.heapsize 

На терминале Android (connectbot или adb shell и т. Д.). Можно перемонтировать read-write и установить размер кучи в файле 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 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 извлеките:

Маленький / нормальный xhdpi: 80 МБ

Маленький / нормальный xxhdpi: 128 МБ

Маленький / нормальный xxxhdpi: 256 МБ

В этих документах есть таблица для других версий Android 2.x, 4.x, 5.x и 6 (см. Ссылку CDD выше).

Обратитесь к этой ссылке google, чтобы легко находить плотность экрана и т. Д. Для определенных устройств: https://design.google.com/devices/

Эти данные работают для меня. Выберите эмулятор планшета Android TV RAM 1536MB VM HEAP 16MB Внутреннее хранилище 800MB Studio -managed 100