Android-баран освобождает / сборка мусора - PullRequest
0 голосов
/ 29 марта 2012

Все,

Я хотел бы освободить оперативную память на моем андроиде для работы с большими объемами данных, а также иметь возможность освободить оперативную память, когда пользователь захочет.Первым делом я подумал о запуске system.gc ().Однако это не гарантия того, что сборщик мусора будет работать.Любые предложения о том, как немедленно и гарантировать, что оперативная память освобождается при вызове кода.Кроме того, как приложения, освобождающие оперативную память при нажатии на виджет, выполняют эту задачу?

Я думаю, что лучший способ выразить это так: как вручную освободить память, как в ОС Android?

Thx

Ответы [ 3 ]

3 голосов
/ 29 марта 2012

Ты не обязан это делать. Android убьет приложения с более низким приоритетом, чтобы освободить память, если вам нужно больше, чем доступно в настоящее время.

1 голос
/ 29 марта 2012

Насколько я понимаю, теория на Android состоит в том, что запущенные приложения должны освобождать память через механизм обратного вызова, когда другому процессу с более высоким приоритетом (то есть текущему приоритетному процессу) требуется больше памяти; Кроме того, ОС начнет убивать другие приложения, если требования к памяти будут увеличиваться.

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

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

Редактировать: Похоже, вы задаетесь вопросом, что делают другие приложения "освобождения памяти". Ответ в том, что они используют ручной подход и делают то же самое, что и ОС - отправляя сигналы запущенным процессам. Причина, по которой это не нужно, заключается в том, что свободный баран на самом деле не приносит вам пользы до того, как он вам понадобится. Операционная система сделает это правильно, прежде чем вам понадобится дополнительное пространство, которое гарантирует, что ни один процесс не будет остановлен раньше, чем это абсолютно необходимо.

0 голосов
/ 29 марта 2012

Android имеет сборщик мусора. iOS нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...