Особое мнение

Тема в разделе "Обсуждение Windows", создана пользователем barney47, 29 янв 2014.

↑ ↓
  1. barney47 Житель форума
    barney47
    Ответить в чате

    Форумчанин

    Регистрация:
    09.10.2013
    Сообщения:
    15
    Симпатии:
    47
    Пол:
    Мужской
    Репа:
    +47 / 0 / -0
    Android: куда делась системная память?


    [​IMG]
    Пользователи android часто сталкиваются с тем, что через некоторое время после после начала использования куда то девается "системная" память. Это касается и пользователей бюджетных версий смартфонов и середнячков. Редко касается только пользователей флагманов, хотя и им не помешает прочитать эту заметку. Тем более, что бюджетных аппаратов "на руках" всё-же большинство.
    Когда покупаешь смартфон на android первые, не понятно, много памяти или мало для реального пользования, той что указана в спецификациях. Мой первый смартфон на android был Samsung Galaxy Gio GT-S5660. В нём 178 мегабайт "встроенной памяти". Мысли при покупке:
    - Так, основные приложения уже установлены. Докупаю ещё карту памяти для мультимедии, файлов и остальных прог. А те что не смогут стать на карту, то для них и 178 метров с головой.
    А через некоторое время приходит прозрение и разочарование. Но давайте обо всём по порядку. Попробуем разобраться с основными понятиями в файловой системе и как "лечить" проблему на минимальном уровне. Я сильно упрощаю материал, поэтому не ищите "неточностей" с точки зрения Computer Sense.

    Операционная система android основана на Linux. Если посмотреть на неё с корня то увидим примерно следующую картину:
    [​IMG]
    То-есть примерно то что и в любом линуксе. Я не буду описывать все папки, если вам это нужно - почитайте соответствующую литературу. Сейчас нас интересует "встроенная память" и "системная". Где это и что?

    Сама операционная система android проинсталлирована в системную память. Это все эти файлы и папки, которые вы видите на скриншоте, за исключением пары. Про эту память производители не пишут нигде и никогда (я не видел, вы видели - покажите). Ни в одном прессрелизе или "спеках" вы не увидите "Системной памяти ХХХ МБ". Здесь находятся все системные файлы, которые мало интересуют обычного пользователя. Используя специальные утилиты её таки можно посмотреть. В Galaxy Gio её 206 мегабайт. Из всей системной памяти нас интересует одна папка /system/app.
    [​IMG]
    Именно в эту папку и установлены все "предустановленные" приложения. Здесь располагаются и те программы, без которых смартфон не может нормально функционировать, например "звонилка", и всякие "синхронизаторы", и те, которые инсталлировал вендор (производитель телефона) по умолчанию. Например Youtube, какой-нибудь офис или "операторский" софт.

    Теперь, где же у нас находится та самая "встроенная память" или "память пользователя". Говоря простым языком она находится в каталоге /data. Если говорить грамотно, то участок внутренней энергонезависимой памяти, доступный пользователю смонтирован в файловой системе как каталог /data, но я буду всё упрощать.
    Что находится в этом каталоге? Начинающий пользователь думает что он пуст, и ему предоставлено всёпространство (в моём случае 178 МБ) в полное распоряжение.
    [​IMG]

    А как бы не так! Эта папка уже после первого старта забита каталогами с файлами. Я опять не буду останавливаться на всех каталогах, а расскажу лишь об основных "пожирателях" места.
    Первая папка это dalvik-cache. Часть android, это Dalvik Virtual Machine, собственная реализация Google виртуальной java-машины, в которой запускаются все приложения. Dalvik-кэш - это промежуточный буфер с быстрым доступом. Простым языком - сюда android cкладывает предварительно скомпилированный код программ для того, чтобы при запуске программы запустить её как можно быстрее. Причём это не зависит от расположения самой программы, хоть системная, хоть в памяти пользователя, хоть на карте памяти - dalvik-cache в одном месте в /data. На примере Galaxy Gio эта папка после первого старта занимает порядка 100-110 мегабайт. Ну и 178 мегабайт памяти для пользователя неожиданно превращаются в 60-70. Грусть-печаль. Совсем без этого кэша нельзя. В сети есть ряд инструкций, которые позволяют перенести этот кэш на внешнюю карту памяти. Конечно это немного сказывается на быстродействии, да и глюки бывают. Я этот приём описывать не буду. (Если у вас есть собственное описание этого метода, стучитесь - обменяемся ссылками)

    Смотрим дальше. Папка /data/app. В неё и инсталлируются все пользовательские программы, которые не могут быть перенесены на карту памяти по каким-то причинам. Причины обычно две. Первая - виджет, программы с виджетом - не могут быть перенесены на карту по ограничениям андроида. Вторая - разработчик забил на пользователей бюджетных смартфонов.

    И теперь самый главный сюрприз, из-за которого я и начал писать этот пост. Когда обновляется программа, которая была "системной", например Youtube, её apk тоже помещается в /data/app. И у нас получается следующее: В /system/app лежит, никуда не девшись старая версия программы, а в/data/app - новая. Конечно "части" программы лежат ещё и в dalvik-cache и в других кэшах и местах, но это как-бы обычно, а вот такое задвоение нам не кстати. Получается, даже если вы не ставили ни одной программы сами, через некоторое время память пользователя (/data/app) "уйдёт" на обновление "системных" программ (конечно если обновляете). Android не переместит сам этот apk в /system/appникогда.

    Что делать?
    Во первых нужно получить root, иначе система не позволит вам ничего записать в /system/app.
    Как получить root для вашего конкретного устройства предлагаю поискать в интернете самим или полистать эту тему на 4PDA.
    Рут-права - это не страшно. Зачастую пользователи конкурирующих систем представляют это как какое-то страшное злодейство, позволяющее делать неизвестно что. Например "пиратить" как с JailBreak на iOS. Для"пиратства" на андроиде всё это не нужно:) Смартфон с включенными root-правами всего лишь позволяет некоторым программам, перечень которых контролируется, всегда или временно получать право записи в системные каталоги. И всё. Как sudo на linux или "Выполнить от имени администратора" на windows. Страшно? Нет. Сейчас на некоторых прошивках-телефонах рут включается просто переключателем в настройках.
    Вторым пунктом нам потребуется программа SystemCleanup
    [​IMG]
    Программа "донатовая". То есть она при каждом запуске просит купить Inteks Donation Key, который идёт к нескольким программам автора, примерно за 3 доллара, но функциональности это не отнимает. Вообще программа позволяет много чего: "одексировать" программы (возможно расскажу об этом позже) на самом устройстве, чистить кеш, удалять системные приложения, делать резервные копии, и многое другое.
    Рассмотрим только восстановление вселенской справедливости перенос обновлённых системных программ на своё место.

    Запускаем программу и переключаемся на вкладку Apps.
    [​IMG]
    Здесь вы видите перечень установленных приложений с дополнительной информацией. Ищем приложения под которыми красным написано system+data. Это и есть наши "штрафники". Разовым тапом по строке будет показана дополнительная информация о месте, занимаемом данным приложением в разных "местах памяти". Делаем долгий тап и выбираем "Update system app" и соглашаемся с действием в дополнительном диалоговом окне. Обычно, после всех перемещений, требуется перезагрузка устройства, что программа и предложит сделать.

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

    Вообще программа может делать довольно много полезных действий. Повторюсь. Например можно удалить предустановленные системные приложения, которые вам не нужны. Причём под большинством приложений есть подпись, безопасно ли его удалять. Можно перенести приложение из основной памяти на карту памяти с полных сохранением работоспособности (только если это не виджет). А можно некоторые приложения сделать "системными". Например вы освободили в системной памяти несколько мегабайт занятых ненужным операторским софтом, и при этом поставили стороннюю "звонилку". Переносить на карту памяти её не целесообразно из-за скорости или отказоустойчивости, а место во "встроенной памяти" она занимает. Долгий тап и выбираем Move app to /system/app, и ваша программа переместилась в папку /system/app, то есть стала системной (с точки зрения андроида).

    На этом сегодня всё. Ещё раз: у программы есть ещё много полезных функций - изучите сами или может быть я когда-нибудь опишу. Есть более радикальные методы "расширения" пользовательской памяти, связанной с перемонтированием далвик-кэша или вообще папки /data на карту памяти. Но они связаны с определённым риском и другими неудобствами.

    Источник
     
    • Мне нравится Мне нравится x 4

Поделиться этой страницей