Понимание сборки мусора в Android

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

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

Вот вопрос:

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

Есть кнопка, которая создает объект при каждом нажатии.

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

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

1 ответ

Решение

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

Читать Управление памятью вашего приложения | Разработчики Android для более глубокого понимания.

Другие вопросы по тегам