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


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

размер кучи пропорционален объему оперативной памяти на телефоне?

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

7 68

7 ответов:

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

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

- это размер кучи пропорционально объему оперативной памяти на телефоне?

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

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

Поиск StackOverflow на [android] "heap size" появляется этот ответ.

еще немного информации об устройстве, извлеченной из сборки.файлы 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) = 32MB
  • 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) = 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/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 MB

не только производители телефонов, но и любой, кто создает версию ОС Android, может указать максимально допустимый размер кучи, исходя из конкретных требований своих устройств. Некоторые корни Android, такие как CyanogenMod, даже позволяют пользователю самостоятельно выбирать размер кучи в качестве настройки.

вы можете определить максимально допустимый размер кучи с помощью метода

Runtime.getRuntime().maxMemory();

дополнительная информация по этой теме доступна здесь.

Если ваш приложение обычно требует более 16 МБ кучи, предлагаемым подходом было бы установить минимальный уровень версии ОС в вашем манифесте, который гарантирует, что подавляющее большинство тех, кто загружает ваше приложение, будет иметь по крайней мере то количество, которое вам нужно, а затем найти способ изящно ухудшить вашу функциональность таким образом, чтобы уменьшить ваши требования к куче по мере необходимости, вплоть до базового уровня 16 МБ, для небольшого числа пользователей с меньшим, чем ваш оптимальный объем кучи сито.

вот некоторые цифры, показывающие связь оперативной памяти телефона с версией ОС (на основе текущей, а не оригинальной, ОС). Я считаю, что телефон, имеющий по крайней мере 1 ГБ оперативной памяти, почти всегда будет иметь более 16 МБ кучи. Обратите внимание, что проценты здесь указаны для номера телефона модели поддержка указанной памяти, а не всего телефонов в использовании, которые могут быть довольно перекошены в сторону определенных моделей. Эти числа были получены путем подключения входов к следующим телефон finder (который включает в себя 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 heapsize с помощью:

getprop dalvik.vm.heapsize

на терминале Android (connectbot или adb shell и т. д.). Можно перемонтировать чтение-запись и установить размер кучи в сборке.опора файл, а также. (Убедитесь, что у вас установлено восстановление, поэтому вы можете переустановить его, если вы случайно сделаете его слишком маленьким, он не загрузится).

"бюджет виртуальной машины", который разрешено использовать приложению, варьируется от устройства к устройству. Планшеты, как правило, позволяют больший бюджет, чем телефоны.

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

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

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

на самом деле существует определенная минимальная память приложения, которая зависит от размера и плотности экрана:

мобильные устройства обычно имеют ограниченные системные ресурсы. Андроид устройства могут иметь всего лишь 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, и мы можем напрямую связать ее с разделом runtime memory: https://source.android.com/compatibility/android-cdd.html#3_7_runtime_compatibility

Для Android 2.3:

реализации устройств с экранами, классифицированными как средне - или низкая плотность необходимо настроить Dalvik для выделения по крайней мере 16 МБ памяти к каждому приложению. Реализации устройства c экранами, классифицированными как высокая плотность или экстра-высокая плотность необходимо настроить Dalvik для выделения по крайней мере 24 Мб памяти для каждого приложения. Обратите внимание, что устройство реализации могут выделять больше памяти, чем эти цифры.

для современных версий вместо этого есть таблица, где это зависит по плотности экрана и т. д.:

для Android 4.2, пример строки из таблицы:

малый / нормальный / большой размер и плотность xhdpi: 64 МБ

для Android 6, выдержка:

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

малый / нормальный xxhdpi: 128MB

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

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

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

эти данные работают для меня. Выберите эмулятор планшета Android TV ОЗУ 1536 МБ КУЧА ВМ 16МБ Внутренняя память 800 МБ Студия -управляемой 100