2015-01-17 6 views
2

У меня возникли проблемы с поиском хорошей информации о сборе мусора в Android.Понимание коллекции мусора Android

Я не очень понимаю, когда у вас есть исключение памяти

Вот вопрос:

Когда я запускаю мое приложение и контролировать его с монитором Android устройств я вижу, что выделенная память 8 МБ, когда приложение только что началось.

Существует кнопка, которая создает объект при каждом нажатии.

Поэтому, когда я продолжаю нажимать кнопку, выделенная память растет до , она достигает размера кучи. Когда размер кучи достигнут, выделенная память возвращается к 8 МБ, но куча немного выросла. После этого все это происходит снова, и куча продолжает расти

У меня есть исключение для памяти в этом случае? или это нормально, что размер кучи продолжает расти?

ответ

1

Размер кучи - это зарезервированная память, которую вы можете использовать. Выделенная память является фактической используемой памятью.
Когда выделенная память приближается к размеру кучи, и вы видите выделенное падение памяти, объекты собираются в мусор. Размер кучи будет расти немного, так как вам, вероятно, потребуется больше памяти, чем в настоящее время зарезервировано.
В конце, если вы продолжаете выделять память без ее освобождения, размер кучи и выделенная память будут расти до тех пор, пока в системе не закончится память (для вашего приложения). В этот момент будет выброшен OutOfMemoryException, и ваше приложение выйдет из строя.

Прочитать Managing Your App's Memory | Android Developers для более глубокого понимания.

+0

Я прочитал документацию, но это недостаточно для того, чтобы полностью ее понять. Так что я понимаю, что сборка мусора также происходит, когда выделенная память не находится вокруг размера кучи. Поэтому, когда кнопка нажата, куча продолжает расти до тех пор, пока она не достигнет размера кучи, необходимого для создания объектов (на которые не ссылаются), но она должна перестать расти в определенный момент, потому что сбор мусора позаботится об этом моменты, определяемые эвристикой? – Joske369

Смежные вопросы