Кроме огромные мегапиксели камеры а также дисплеи с высокой частотой обновления, самой большой тенденцией в мире смартфонов является виртуальная оперативная память. Некоторые называют это динамическим расширением ОЗУ, а другие называют его расширенным ОЗУ. Независимо от того, как это называется, идея остается неизменной. Разрешить пользователям использовать часть своего хранилища в качестве оперативной памяти для многозадачности.
В этом руководстве мы обсудим, как работает управление памятью в Android и чем отличается от него идея виртуальной оперативной памяти. Мы попробуем подумать, нужна ли вообще виртуальная оперативная память на Android или нет. Итак, давайте приступим к делу.
Как работает управление памятью на Android
Прежде всего, важно понять, как Android управляет вашей памятью. В Android есть 3 типа памяти. Во-первых, это ваша оперативная память, затем у вас есть zRAM и, наконец, ваше хранилище. Оперативная память — это основной модуль памяти, внутри которого работают все приложения. Тогда есть ваше встроенное хранилище, UFS или eMMC на бюджетных устройствах. Наконец, у нас есть zRAM. По сути, zRAM — это раздел внутри оперативной памяти.
Идея zRAM заключается в том, что низкоприоритетные данные в ОЗУ сжимаются и хранятся внутри zRAM. Поскольку ОЗУ в любой день быстрее вашего обычного хранилища, сжатие данных внутри zRAM, которая является частью ОЗУ, все равно будет быстрее, чем доступ к ним из вашего хранилища, даже если вы посчитаете время сжатия и распаковки.

Теперь, когда мы установили 3 разных типа памяти, доступных для Android, давайте разберемся, как ОС справляется со всем этим. Таким образом, Android использует методы пейджинга. Как это работает, так это то, что ОЗУ разбито на страницы, где каждая страница обычно имеет размер 4 КБ. Независимо от того, свободна ли эта страница или активно используется, они объединяются, чтобы показать используемую и неиспользуемую оперативную память соответственно. Затем задача ядра состоит в том, чтобы преобразовать используемую память в свободную память. Он делает это, перемещая данные на этих используемых страницах в ваше хранилище.
Что такое пейджинг и как он работает
Чтобы понять, как это работает, давайте разберемся с типами страниц. Вы можете разделить страницы на два типа — чистые и грязные страницы. Чистые страницы имеют неизмененную копию, сохраненную в хранилище. Между тем, грязные страницы имеют измененную копию данных, хранящихся в хранилище. Теперь, что это модифицированное и немодифицированное? Назовем это динамическим использованием вашей памяти.
Неизмененные копии — это статические данные, а измененные копии — это динамические данные, которые изменяются каждую секунду. Android может очищать чистые страницы, когда это необходимо, поскольку они не обращаются к ресурсам динамически. Это помогает освободить оперативную память и сделать ее доступной. Это может показаться слишком техническим, поэтому давайте упростим понимание, используя реальные приложения.

Предположим, вы открываете Twitter, просматриваете свою ленту, а затем переключаетесь на что-то другое. Твиттер все еще в вашей оперативной памяти. Но если вы не открываете его какое-то время, его приоритет снижается. Позже, если вы запустите что-то новое, Android должен будет освободить память, которую использует Twitter. Итак, что он делает, так это то, что он перемещает свои значения и данные в хранилище и дает вам свободное место. Вот почему, когда вы снова запустите Twitter, он сначала покажет вам временную шкалу, на которой он находился в спящем режиме, а затем обновится. То же самое для Facebook, Reddit или подобных приложений, таких как калькулятор или заметки. Эти приложения используют чистые страницы, поскольку копия их данных статически сохраняется в вашем хранилище.

Теперь для грязных страниц рассмотрите Spotify или любой музыкальный проигрыватель. Вы запускаете музыку в плеере, а затем продолжаете работать в фоновом режиме, не открывая приложение. Однако система не может закрыть его, поскольку динамически использует вашу память. В результате Android сжимает приложение и перемещает его в zRAM, когда требуется больше свободной оперативной памяти.
Что такое виртуальная оперативная память
Теперь, когда вы знаете, как Android управляет памятью, вы должны задаться вопросом — при чем здесь функция виртуальной оперативной памяти? Помните, как мы говорили, что zRAM тоже является частью оперативной памяти? Принцип работы виртуальной оперативной памяти заключается в том, что она создает раздел подкачки в вашем дисковом пространстве и использует его как дополнительную zRAM.

Поскольку zRAM хранится только в вашей оперативной памяти, существует ограничение на количество страниц, которые вы можете сжимать и хранить в ней. С разделом подкачки вы можете использовать свое пространство для хранения в качестве дополнительной zRAM для сжатия и перемещения приложений, при этом освобождая место в вашей реальной оперативной памяти.
Является ли эта функция новой?
Так это все новое? Ну не совсем. Linux использует разделы подкачки с самого начала. Для Android пользователи пользовательского ядра использовали свои SD-карты для создания дополнительных разделов подкачки для улучшения управления памятью.
Таким образом, производители брендов просто предоставляют вам ту же функцию, встроенную в их оболочки для Android. Однако возникает вопрос: если эта функция так полезна, почему она не является частью исходного кода Android?
Виртуальная оперативная память — это хорошо или плохо?
Ответ кроется в самой базовой работе самой Virtual RAM. Хотя эта функция позволяет запускать больше приложений на вашем устройстве, сжимая приложения в спящем режиме и перемещая их в хранилище, она приносит больше вреда, чем пользы. Поскольку разделы подкачки, по сути, хранят активные приложения, здесь задействован более высокий смысл чтения и записи.
Это прекрасно работает на традиционном хранилище, но у флэш-памяти ограниченное количество операций чтения и записи. Таким образом, используя SWAP или виртуальную оперативную память, вы технически сокращаете срок службы хранилища вашего устройства.
Это также хорошо подчеркнуто на Страница разработчика Android. «В Android хранилище не используется для пространства подкачки, как в других реализациях Linux, поскольку частая запись может привести к износу этой памяти и сократить срок службы носителя данных». Другой пример — новые MacBook Apple M1. Эти машины используют раздел подкачки на твердотельных накопителях Apple, на что пользователи жалуются довольно много.
Имеет ли значение виртуальная оперативная память и стоит ли ее использовать
По сути, все зависит от того, как вы определяете многозадачность. Если он переключается между двумя-тремя активными приложениями, то, конечно же, виртуальная оперативная память помогает в этом. Но если вы продолжите переключаться между 5-6 активно активными приложениями, виртуальная оперативная память ничего не сделает, потому что она будет продолжать переключать приложения.
По своей сути, функция виртуальной оперативной памяти позволяет вам получить больше места в оперативной памяти для запуска приложений. Однако это происходит за счет вашего хранилища. Если вы собираетесь использовать свое устройство более двух лет, мы считаем, что использование виртуальной оперативной памяти может не иметь особого смысла.
