Я делаю некоторые приложения (серверы и клиенты). У меня есть точка, где мне нужно вызвать System.gc();Java и вызов сборщика мусора
Но я нашел здесь Why is it bad practice to call System.gc()?, который не рекомендуется вызывать gc.
Если я использую System.gc() программы работает на ~ 80MB памяти, но без дс, память вырастает до ~ 600-700MB и мне нужно, чтобы запустить его на Android телефонов
Существуют ли другие методы очистить память?
Благодаря
EDIT: Видя комментарии, в Android, как я испытал (портированы 1 час назад), с System.gc() работает хорошо, я не проверял без него
EDIT 2 : Вот две фотографии программ, работающих в рабочем столе через 5 минут:
с System.gc(): http://imgur.com/M9yMBei Без System.gc(): http://i.imgur.com/4qb2Ylc.png
EDIT 3: WOW !! 1, прежде чем опубликовать это приложение использует около 2 ГБ оперативной памяти!
600 МБ кучи? – Blackbelt
GC будет возвращать объекты * когда * он может (и * когда * он думает, что это необходимо) - для таких систем, как Android, трюк заключается в разработке приложения, которое не так много нужно загружать за раз. Вот почему представления имеют автономные жизненные времена в Android и т. Д.: Дизайн позволяет * ограничить * рабочий след. – user2864740
Чтобы уточнить: без вызова 'System.gc()' память растет до 600, 700 МБ * при запуске на мобильном устройстве *? Или вы делаете эти тесты на настольной машине с настольным JRE? – delnan