Я использовал/proc/meminfo и проанализировал команду response.however, это заканчивается шоу что:
MemTotal: MemFree на 94 348 КБ: 5 784 КБ
средства. это показывает, что существует только 5 МБ свободной памяти. Действительно ли это возможно с мобильным андроидом? Существует только приложение 5-6, установленное по моему мобильному телефону, и никакая другая задача не работает. но все еще эта команда показывает, что существует очень мало свободной памяти.
Кто-то может разъяснить это? или есть ли какой-либо другой способ получить использование памяти в андроиде?
ВНИМАНИЕ! Этот ответ измеряет использование / доступную память УСТРОЙСТВА. Это НЕ то, что доступно вашему приложению. Чтобы измерить, что делает ваше приложение, и РАЗРЕШЕНО ли это делать, используйте ответ разработчика Android .
Документация по Android - ActivityManager.MemoryInfo
команда parse / proc / meminfo. Вы можете найти справочный код здесь: Получить использование памяти в Android
использовать приведенный ниже код и получить текущую оперативную память:
MemoryInfo mi = new MemoryInfo ();
ActivityManager activityManager = (ActivityManager) getSystemService (ACTIVITY_SERVICE);
activityManager.getMemoryInfo (mi);
double availableMegs = mi.availMem / 0x100000L;
// Процент можно рассчитать для API 16+
двойной процентAvail = mi.availMem / (двойной) mi.totalMem * 100.0;
Объяснение числа 0x100000L
1024 bytes == 1 Kibibyte
1024 Kibibyte == 1 Mebibyte
1024 * 1024 == 1048576
1048576 == 0x100000
Совершенно очевидно, что число используется для преобразования байтов в мебибайт
P.S: нам нужно вычислить общий объем памяти только один раз. поэтому вызывайте точку 1 только один раз в своем коде, а затем после этого вы можете повторно вызывать код точки 2.
Другой способ (в настоящее время на моем G1 отображается 25 МБ свободного места):
MemoryInfo mi = new MemoryInfo();
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
activityManager.getMemoryInfo(mi);
long availableMegs = mi.availMem / 1048576L;
Философия управления памятью Linux такова: «Свободная память - это потраченная впустую память».
Я предполагаю, что следующие две строчки покажут, сколько памяти находится в «Буферах» и сколько в «Кэшированных». Хотя между ними есть разница (пожалуйста, не спрашивайте, в чем эта разница :), они оба примерно в сумме составляют объем памяти, используемый для кеширования файловых данных и метаданных.
Намного более полезным руководством по освобождению памяти в системе Linux является команда free (1)
; на моем рабочем столе он сообщает такую информацию:
$ free -m total used free shared buffers cached Mem: 5980 1055 4924 0 91 374 -/+ buffers/cache: 589 5391 Swap: 6347 0 6347
Строка +/- buffers / cache: - это волшебная строка, она сообщает, что у меня действительно есть около 589 мегабайт активно необходимой памяти для процессов и около 5391 мегабайт памяти. свободная память в том смысле, что 91 + 374 мегабайта буферов / кэшированной памяти могут быть выброшены, если память может быть более выгодно использована в другом месте.
(Моя машина работала около трех часов, почти ничего не делая, кроме stackoverflow, поэтому у меня так много свободной памяти.)
Если Android не поставляется с free (1)
, вы можете выполнить вычисления самостоятельно с помощью файла / proc / meminfo
; Мне просто нравится формат вывода free (1)
. :)