Android правильная очистка / удаление - PullRequest
8 голосов
/ 14 июля 2011

Есть ли способ "очистить" объекты и другие переменные, которые вы создаете?Или они автоматически утилизируются или у меня вся эта концепция неверна?Как правильно делать это?Я стараюсь избегать GC как можно больше.

Ответы [ 5 ]

12 голосов
/ 14 июля 2011

Единственный способ очистки на языке GC без управления памятью - это GC.Вы можете заставить GC, но это не рекомендуется, GC довольно хорош, чтобы быть более активным, установить объекты в NULL для очистки GC.

Добавление:

Также попробуйте сделать объекты каклокально, насколько это возможно, таким образом они GCed, поскольку они выходят за пределы.

3 голосов
/ 14 июля 2011

Для более полного ответа, специфичного для Android:

Обязательно просмотрите жизненный цикл приложения для Android. Это поможет вам избежать утечек активности в Android.

3 голосов
/ 14 июля 2011

Вызов System.gc() приведет к сбору мусора.

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

Пожалуйста, просмотрите эту страницу и найдите "Сборка мусора"

http://developer.android.com/guide/practices/design/performance.html

ПРИМЕЧАНИЕ. Все, что создано в контексте приложения, будет действовать до конца выполнения приложения. Все, что создано с Контекстом Действия, будет жить до конца действия. Эти две ситуации могут вызвать утечку памяти!

2 голосов
/ 14 июля 2011

Действия Android имеют метод onDestroy (). Вы можете использовать этот метод, чтобы закрыть открытые соединения или диалоги или закрыть некоторые отложенные задачи.
Вы также можете прочитать о Java GC, чтобы лучше понять его. Я бы порекомендовал книгу SCJP, глава «Сборка мусора». Это хорошо объясняет, когда объект получает право на сборку мусора.

2 голосов
/ 14 июля 2011

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

Я не думаю, что вам нужно беспокоиться о сборщике мусора, пока вашсоздание объекта не чрезмерно.Примечание: GC является частью Java.Вы не можете избежать этого.

Приложение 1: Если вы действительно беспокоитесь об этом, вы можете использовать переменные повторно.Таким образом вы сводите создание объекта к минимуму, но при этом вы потеряете эту переменную и не сможете хранить широкий диапазон данных.

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