Почему памяти на планшете отображается меньше, чем заявлено производителем?

Android-MemoryМногие наверное замечали, что производители указывают в характеристиках одни цифры, а на практике в настройках (пункт «Память») мы видим совершенно другие, меньшие значения. Вот именно этой хитрой проблеме и посвящен данный материал.

Для ответа на этот вопрос можно (если сомневаетесь в ответе данном ниже) посетить следующие сайты:

  1. http://devfaq.ru
  2. http://android.stroicia.ru
  3. google.ru с запросом: «android почему доступно памяти меньше«

Как проверить реальное количество памяти на устройстве с Android?

По порядку:

1. Оперативная память (ОЗУ)

ОЗУ на наших планшетах установлено 512Mb RAM (в новых больше). В свойствах чаще всего показывается меньше (от 300 до 200Мб).

Куда девается память?
Как и написано в статьях ссылки, на которые даны выше:
  1. Загрузчик ОС (иными словами ядро или android kernel)
  2. Радио-модуль (у нас его нет, но есть драйвера для модема)
  3. Конфигурационные матрицы блютус-устройств и другие подобные небольшого размера (ужас как назвали, попросту модули ядра или драйвера устройств)

Проверяем:

Для проверки нам потребуется Android Terminal Emulator. Это попросту консоль, которая позволит вводить *nix команды.
Команда dmesg показывает полный лог загрузки ядра ОС.

В Терминале выполняем следующую команду (лучше ее выполнять после перезагрузки устройства):

dmesg > /sdcard/log.txt

Команда создаст в папке /sdcard на устройстве файл log.txt. Открываем файл, смотрим первые 10-20 строк и ищем следующее:

Для версии ядра меньше 2.6.2х.хх

[ 0.000000] Memory: 256MB 256MB = 512MB total
[ 0.000000] Memory: 340484k/340484k available, 183804k reserved, 0K highmem

Для версии ядра больше 2.6.3х.хх или 3.х

[    0.000000] DDR DEBUG: version 2.02 20111109
[    0.000000] DDR DEBUG: DDR3 Device
[    0.000000] DDR DEBUG: 1 CS, ROW=14, Bank=8, COL=10, Total Capability=512MB
[    0.000000] DDR DEBUG: init success!!! freq=456MHz
[    0.000000] DDR DEBUG: CSR:0x0, RSLR0:0x249, RSLR1:0x0, RDGR0:0x55, RDGR1:0x55

Примечание: DDR DEBUG выводится если в ядре при компиляции указан флаг Memory Debug.

Что это значит?

  • Первая строка (Memory: 256MB 256MB = 512MB total) говорит, что в устройстве 2 чипа по 256Мб, в сумме 512Мб. Это значение реальной оперативной памяти, установленной в планшете. Или для новых ядер DDR DEBUG: ….. Total Capability=512MB. (в новых ядрах строка Memory уже выводит только доступную пользователю память, а реальная написана в DDR DEBUG выше.)
  • Вторая строчка (у старых ядер: 340484k/340484k available, 183804k reserved) говорит, что 183Мб зарезервировано ядром системы. Эту память вам не высвободить никак, так как в этом пространстве памяти будут работать модули и само ядро. Из строки еще видно, что 340МБ доступно пользователю.

После загрузки ядра (пока ядро грузится вы видите на экране логотип компании), в дело вступает сама Операционная Система. ОС начинает загружать системные приложения нужные ей для работы (в это время на экране переливается логотип Android), и приложения записанные в автозапуск (все Ваши виджеты на рабочем столе тоже сидят в памяти). В итоге: из оставшихся 340Мб памяти, 80-120Мб займут эти системные приложения и виджеты.

Пользователю под запущенные приложения останется порядка 200Мб, а это меньше, чем заявлено. Этого для системы Android вполне достаточно, потому что если памяти станет мало, Android сам решить какое приложения (даже системное) выгрузить из памяти, для освобождения ОЗУ.

В итоге: Памяти на планшете меньше, изза потребностей самой системы. Можно конечно память высвободить, способы по оптимизации есть — ищите в поисковиках.

Аналогия: Сразу после загрузки вашей ОС (это скорее всего Windows)  нажмите Ctrl + Alt + Del и запустите Диспетчер задач вы увидите там сводку о памяти. «Всего», «Доступно», «Кэшировано»… «Доступно» памяти меньше, чем всего, так как системе тоже нужно место. Но просто Windows в отличие от Android позаботился о том, чтобы вывести пользователю реальное значение «Всего» на экран.

2. Встроенная память NAND (ROM).

В наших устройствах NAND памяти 4Гб. В сводке о свободной памяти отображается порядка 2.5Гб, а то и меньше.

Куда девается память?
Память внутри устройства делится на несколько разделов (для пользователей ОС Windows поясню, память делится как будто на разделы C:, D:, E:, F:).
Чаще всего деление происходит так:
  1. data — раздел в которые устанавливаются программы
  2. system — тут хранятся системный файлы
  3. cache — тут хранятся временные файлы программ и также их настройки.
  4. sdcard — /mnt/sdcard — то где хранятся пользовательские файлы, и то что подключается как USB-диск, если подключить планшет проводом к компьютеру.

Разделы system и cache не доступны пользователю (доступ к ним можно получить только с правами root). Раздел data может отображаться в свойствах как «доступно для приложений», обычно он имеет размер в 1Гб. Деление на разделы происходит во время перепрошивки устройства, и размер раздела задается заведомо больше, чем займет ОС. Например, под системные файлы раздел system может быть размером 500Мб, хотя сама ОС будет занимать на этом разделе 300Мб, хоть 200Мб останется свободно, но как я уже сказал ранее, они не будут доступны пользователю.

Проверяем:

Для проверки нам опять потребуется Android Terminal Emulator. И установленный BysyBox, в большинстве устройств он уже уставновлен, если нет — то придется получать права root.

В Терминале выполняем следующую команду:

busybox df

команда выдаст в консоль следующее (значения могут отличатся в зависимости от устройства):

Filesystem                  1K-blocks     Used     Available    Use%  Mounted on
tmpfs                         416908        44       416864     0%     /dev
tmpfs                         416908         0        416908     0%     /mnt/asec
tmpfs                         416908         0        416908     0%     /mnt/obb
/dev/block/nandd         393688      215716  177972     55%    /system
/dev/block/nande         1032088     84216   947872     8%     /data
/dev/block/nandh         258016       4228     253788     2%     /cache
/dev/block/vold/93:64   5971932       48       5971884   0%     /mnt/sdcard

Что это значит?
раздел tmpfs нас не инетерсует, что ито и зачем, если интересно читайте тут: TMPFS
Нас инетересуют все /dev/block/*  и поле 1K-blocks (размер раздела в байтах). Поле Mounted on показывает какой раздел подключен.
Суммируем все значения поля 1K-blocks всех /dev/blocks/*:

393688+1032088+258016+5971932=7655724 Байт или 7,6 Гб.

 Отсюда можно сделать вывод, что в устройстве установлена NAND на 8Гб ROM (ну надеюсь все помнят что на 8 гиговой USB-флешке доступно 7,3-7,6 Гб под запись, надеюсь все знают почему, и все помнят, что такое округление)

В итоге: Android отображает пользователю размер раздела data(реже) и sdcard , а не реальный размер всей внутренней памяти. И в итоге Вы видите, что памяти меньше, чем заявлено. 2-3Гб вместо обещанных 4Гб.

Аналогия: Windows 7 при установке создает 100Мб раздел и скрывает его от пользователя, там хранятся файлы для восстановления загрузчика ОС. Так же на ноутбуках может быть скрытый раздел от пользователя (порядка 10Гб), на котором хранится раздел для восстановления ОС и драйверов.

Оставить комментарий


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

=