Android «Внутреннее хранилище» используется, но не сообщается

9

Как владелец Nexus One с Gingerbread, я постоянно борюсь за то, чтобы освободить место во внутреннем хранилище моего телефона. Сегодня я заметил нечто странное.

В нижней части экрана «Управление приложениями» Андорида изображена гистограмма, которая сообщает о «Внутреннем хранилище» телефона (у меня 29M бесплатно). Когда я щелкаю в приложении, я вижу хранилище для «Приложения» и «Приложения» для приложения. Приложение в большинстве случаев хранится на SD-карте. «Данные» приложения хранятся на телефоне (я полагаю).

Я обнаружил, что не вижу полной картины того, что занимает Внутреннее хранилище. Например, у меня есть 29M бесплатно во внутренней памяти. Приложение Angry Birds, которое хранится на SD-карте, имеет размер 3.14M. Это данные 4.0K. Затем я удаляю Angry Birds (задыхаясь!), И мое свободное внутреннее хранилище увеличивается до 31M. Похоже, что он освобожден до 2M, когда я ожидал, что он освободит 4.0K. Есть идеи, что здесь происходит?

rcourtna
источник

Ответы:

4

Разницу в свободном пространстве можно объяснить тремя важными факторами, которые могут привести к вводящей в заблуждение информации о реальном пространстве, доступном во внутренней памяти:

  1. Сообщение о свободном пространстве

    Свободное пространство, указанное в конце экрана «Управление приложениями», округляется до МБ, и оно дает вам общую оценку свободного пространства, основанную на моменте открытия указанного экрана, и время от времени обновляется (по моим тестам о каждую минуту).

    Я упомянул «округленный», потому что если вы откроете панель «Настройки хранилища», вы получите четкое представление о доступном свободном пространстве, вплоть до КБ.

  2. Распределение приложений

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

    Я выполнил упражнение с «Angry Birds», и хотя при загрузке упоминалось 20 МБ, после установки он занимал 24 МБ. После перемещения его на SDCard с использованием опции для этого на экране «Управление приложениями» 1,85 МБ осталось на внутренней памяти плюс 4 КБ данных.

  3. Временные системные файлы из других приложений или запущенных сервисов

    Пока я писал этот ответ, сообщаемое свободное пространство варьировалось от 2 МБ, это говорит о том, что ОС постоянно создает и освобождает пространство в зависимости от того, что работает.

Могут существовать и другие факторы, которые касаются спецификаций файловой системы ext4, используемых Gingerbread, но я не думаю, что они лучше учитывают разницу в 2 МБ.


По трем упомянутым выше пунктам, выполняя упражнение с приложением, которое вы упомянули, используя устройство со стандартным ПЗУ Gingerbread, мне удалось учесть разницу в 2 МБ, как и пространство, которое вы упомянули.


Определить внутреннее и внешнее пространство, занимаемое

Следуя комментариям, касающимся способа точно определить, сколько приложения занимает устройство, и возможности просмотра его с помощью внешнего или внутреннего хранилища, наиболее точное приложение, которое я сейчас использую, - это SanDisk Memory Zone от SanDisk Corp. доступно бесплатно из магазина Google Play.

  1. Откройте приложение
  2. Выберите желаемое хранилище
  3. Проверьте детали об этом

    ScanDisk Снимки экрана

Zuul
источник
Очень хорошее объяснение, как всегда, когда это делает Zuul :). Итак, вы бы сказали, что есть какой-то способ для конечного пользователя четко определить, сколько места занимает приложение, и где - не включая «сложные вещи», такие как, например, использование терминальные приложения? Поскольку у нас есть много вопросов относительно того, «куда уходит мое хранилище», это было бы очень полезно.
Иззи
В дополнение к моему предыдущему комментарию, поскольку я не прояснил это: я имел в виду определить, сколько места занимает приложение во внутренней памяти и сколько во внешней памяти - то есть посмотреть, сколько и где. Лучше всего, конечно, если бы можно было увидеть все это в одном месте - в отличие от того, что я показал в своем ответе с исследователями графического хранилища.
Иззи
Я полагаю, что это файлы dex приложений, которые, как правило, остаются в памяти телефона при его перемещении на SD с помощью стандартной Apps2SD. Итак, моя теория состоит в том, что чем меньше dex-файлы приложения, тем эффективнее становится App2SD.
Ирфан
Я уже спрашивал себя, включен ли кеш Dalvik с данным «распределением приложений». То же самое для временных файлов, которые могут быть идентифицированы через их владельца (uid) - но это потребует полного сканирования файловой системы, что будет стоить немного времени и ресурсов, но теоретически может быть сделано по требованию (с помощью некоторой кнопки повторного сканирования).
Иззи
1
Спасибо за добавление, @Zuul! Как вы используете это приложение: на снимке экрана нет деления на «память телефона». Различают ли между /dataи /data/dataперегородки, что часто вызывает путаницу (если таковые есть отдельные разделы - которые не верна для всех устройств / Android версии)?
Иззи
3

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

Например, DiskUsage . Хотя на скриншоте 1 показана SD-карта, видео на странице магазина приложений показывает, что ее можно использовать и во внутренней памяти - и даже ссылки на страницу приложений, которую вы обычно находите через Меню -> Приложения -> Управление приложениями . Вы можете ходить и увеличивать / уменьшать каждую область, как показывают аннотации на скриншоте.

Мой второй кандидат - это Таблица размеров папок , которая имеет другой дизайн и, как видно на скриншоте 2 , также может работать с внутренним хранилищем.

DiskUsage Таблица размеров папок

Эти два могут определенно помочь идентифицировать "свиньи хранения". Есть много других найденных в PlayStore, которые следуют этой концепции, но большинство ограничены SDCard или требуют корневого доступа.

Иззи
источник
3

Поскольку N1 тесно связан с HTC Incredible, вы можете столкнуться с той же проблемой нехватки памяти, которая преследует Невероятных пользователей (таких как я). Я задал связанный вопрос, когда начал испытывать принудительное закрытие приложений из-за нехватки пространства для разделов, а затем консолидировал мое понимание разделов данных в ответе на вопрос о ложном предупреждении «мало места (внутреннее хранилище)» в HTC Incredible :

... на экране настроек моего приложения показано, каким должно быть /dataиспользование (никогда не близко к полному, числа соответствуют /dataразмеру, сообщаемому DiskUsage), даже если мои приложения на самом деле ограничены гораздо меньшим /data/data(там, где мне часто не хватает места) ...

Я обнаружил, что число, сообщаемое как «Внутреннее хранилище», сообщало о чем-то совершенно бесполезном и, по общему мнению, бесполезно помогало мне фактически управлять хранилищем приложений. Я согласен с Иззи в его рекомендации по DiskUsage , он мне очень помог, особенно при руте (с правами root он может отображать /data/dataиспользование раздела). Использование эмулятора терминала для проверки использования также помогло диагностировать мою проблему. Когда вы смотрите на ваш раздел /dataи /data/dataразделы, вы видите те же самые расхождения?

Мистер Бастер
источник
2

Похоже, вы используете Apps2SD или аналогичный, в результате чего, перемещая приложение на SDCard, во внутренней памяти хранится только часть приложения, а остальная часть - на SDCard.

Для проверки проверьте свою SDCard и посмотрите, есть ли данные приложения, они должны присутствовать, за /sdcard/Android/data/которым следует имя пакета установленного приложения.

Это нормальный механизм Apps2SD.

t0mm13b
источник
Спасибо, я использую Link2SD. Я не понимал, что это оставляет часть приложения позади. Это помогает объяснить это.
rcourtna
1

У многих людей такая проблема, и у меня такая же. Перемещение приложений на SD-карту только немного задерживает проблему, потому что что-то еще заполняет внутреннюю память. Я наконец понял, и это прекрасно работает.

У меня есть Galaxy Tab 7, но многие андроид устройства будут испытывать это. Тот, который называется, /dataна самом деле не просто данные, но именно здесь Android устанавливает приложение apk и некоторые данные, связанные с ним. Если принудительно установить apk на SD-карту, он все равно будет использовать некоторое /dataпространство (небольшое количество) для некоторых данных.

Проблема, в которой я обнаружил, заключается в том /data/tombstone, что вы найдете 10 именованных файлов tombstone_0#. Это постоянная / безостановочная информация отладки, собранная Android. Эти файлы со временем накапливаются. Это не нужно для обычного пользователя. Удалить все из них. Эти 4 файла использовали 1,4 ГБ внутренней памяти планшета на 1,89 ГБ.

Для этого вам нужно будет рутировать ваше устройство. Да, ты должен. И это не взорвется, не волнуйтесь, я сделал это и многие другие тоже! Затем найдите программу типа «Root Explorer» для просмотра и удаления ненужных файлов. Он запросит и получит привилегию root, если вы ранее рутировали свое устройство, и вы сможете делать все, что захотите.

Чтобы получить root права на ваше устройство, просто гуглите «root android [моя модель устройства]», и вы быстро найдете, как рутировать ваше устройство.

Эта проблема является недостатком дизайна. При нехватке внутренней памяти Android должен запустить фоновое задание для очистки этого мусора.

Сильвен Хуард
источник
Пожалуйста, также посмотрите мои комментарии к вашему подобному ответу здесь - я никогда не видел надгробий, занимающих более 10 МБ, ваш случай - первый. И даже если для их удаления требуется root. PS: поскольку «надгробия» - это то, что называется «дампами ядра» в Unix / Linux, их размер варьируется в зависимости от памяти, используемой их соответствующими (сбойными) процессами. Ваши Obvioulsy были довольно жадными до памяти приложениями :)
Иззи