27 МБ + 4,2 МБ = 28 МБ? Куда делось мое пространство?

Получив в сотый раз сообщение о том, что на моем Nexus One «недостаточно места», я перешел к экрану «управление приложениями», чтобы удалить приложения, которые я не использовал в последнее время. Я ждал, пока экран полностью загрузится, прежде чем что-то делать. В нем говорилось, что во внутренней памяти телефона свободно 27 МБ. Затем я нажал на приложение «Fooducate», которое я установил. В нем говорилось, что для приложения используется примерно 4,2 МБ внутренней памяти плюс около 12 КБ данных. Он был установлен на телефоне, и перенести его на SD-карту не представлялось возможным. Я нажал «удалить», и процесс удаления запустился. После этого экран «управление приложениями» утверждал, что у меня осталось 28 МБ.

Что случилось с остальными 3,2 МБ? Я думаю, что если у вас есть 27 МБ и вы удаляете программу, которая использует 4,2 МБ места, у вас будет 31,2 МБ свободного места.

Обновлять:

После выключения телефона и его повторного включения, а затем перехода к экрану «управление приложениями», теперь он говорит, что 32 МБ свободно, что больше похоже на то, что я ожидал. Итак, я думаю, мой пересмотренный вопрос: почему место не было доступно сразу, и есть ли что-то, что я могу сделать, чтобы освободить его, не отключая питание?

Ответы (2)

Из того, что я могу понять из вашего сценария, кажется, что виновником является Dalvik Cache андроида.
Цитата из темы на форумах xda: -

Когда Android запускается, DalvikVM просматривает все ваши приложения (файлы .apk) и фреймворки и строит дерево зависимостей. Он использует это дерево зависимостей для оптимизации байт-кода для каждого приложения и сохраняет его в кеше Dalvik. Затем приложения запускаются с использованием оптимизированного байт-кода. Вот почему, когда вы устанавливаете новое ПЗУ, иногда первая загрузка занимает очень много времени. Каждый раз, когда приложение (или библиотека фреймворка) изменяется, оно повторно оптимизируется, а кеш обновляется.

и похоже, что каждый раз при перезагрузке dalvik cache переоптимизируется.

Я не слишком уверен, какая связь может быть между кешем Dalvik и реальным пространством во внутренней области хранения приложений. Из того, что я читал, кеш Dalvik использует свой собственный раздел.
@jmbouffard, отдельный раздел звучит довольно непрактично. Как он будет изменять размер, если это необходимо? Как бы вы выбрали хороший начальный размер? Для меня было бы гораздо логичнее, если бы он использовал тот же раздел, что и обычный андроид, позволяя пользователю получать сообщения, как и вы.
В режиме восстановления моего телефона есть опция «стереть раздел кеша», которую я связал с кешем Dalvik. Но я видел другие ссылки, в которых говорится, что кеш Dalvik находится в /data основного раздела. Таким образом, это может отличаться от устройства к другому, или я неправильно истолковал раздел кеша, упомянутый в режиме восстановления.

Из собственного опыта я также заметил, что даже без перезагрузки место на диске освобождалось после небольшого ожидания. Итак, моя теория заключается в том, что ОС Android распределяет операции записи во внутреннюю память вовремя, чтобы улучшить отзывчивость устройства.

Но я до сих пор не уверен, что если память нужна прямо сейчас для установки нового приложения, будет ли она освобождена для этой цели, или сообщение «недостаточно памяти» появится снова, пока удаленное приложение не освободит свою память.