Android-баран освобождает / сборка мусора
Все,
Я хотел бы освободить оперативную память на моем Android для работы с большими объемами данных, а также иметь возможность освободить оперативную память, когда пользователь захочет. Первым делом я подумал о запуске system.gc(). Однако это не гарантия того, что сборщик мусора будет работать. Любые предложения о том, как немедленно и гарантировать, что оперативная память освобождается при вызове кода. Кроме того, как приложения, которые освобождают оперативную память при нажатии на виджет, выполняют эту задачу?
Я думаю, что лучший способ сформулировать это так: как вручную освободить память, как в ОС Android?
Спасибо
3 ответа
Вам не нужно делать это. Android убьет приложения с более низким приоритетом, чтобы освободить память, если вам нужно больше, чем доступно в данный момент.
Насколько я понимаю, теория Android состоит в том, что работающие приложения должны освобождать память с помощью механизма обратного вызова, когда другому процессу с более высоким приоритетом (то есть текущему процессу переднего плана) требуется больше памяти; Кроме того, ОС начнет убивать другие приложения, если требования к памяти будут увеличиваться.
Поэтому, если вы хотите, чтобы ваше приложение могло использовать практически всю системную память, вам просто нужно убедиться, что оно остается на переднем плане, или использовать какой-то другой механизм, чтобы гарантировать, что его требования к памяти имеют более высокий приоритет, чем другие требования к памяти (к сожалению, Я не могу сказать, как будет выглядеть эта последняя часть).
На самом деле вы можете или не должны делать это вручную, чтобы освободить память за пределами вашего конкретного приложения. Операционная система делает правильные вещи: когда требуется память, она сообщает приложениям "удалить все несущественные данные", а затем после этого, если требуется больше памяти, сообщает им о потере. Любой ручной подход к освобождению памяти сделал бы то же самое.
Изменить: Похоже, вы задаетесь вопросом, что делают другие приложения "освобождения памяти". Ответ в том, что они используют ручной подход и делают то же самое, что и ОС - отправляя сигналы запущенным процессам. Причина, по которой это не нужно, заключается в том, что свободный баран на самом деле не приносит вам пользы, пока вам это не нужно. ОС сделает это правильно, прежде чем вам понадобится дополнительное пространство, что гарантирует, что ни один процесс не будет убит до того, как это станет абсолютно необходимым.