Понимание сборки мусора в Android
У меня проблемы с поиском хорошей информации о сборке мусора в Android.
Я не очень понимаю, когда у вас есть исключение памяти
Вот вопрос:
Когда я запускаю свое приложение и наблюдаю за ним с помощью Android Device Monitor, я вижу, что выделенная память составляет 8 МБ, когда приложение только начинается.
Есть кнопка, которая создает объект при каждом нажатии.
Поэтому, когда я продолжаю нажимать кнопку, выделенная память увеличивается, пока не достигнет размера кучи. Когда размер кучи достигнут, выделенная память возвращается к 8 МБ, но куча немного увеличилась. После этого все это происходит снова, и куча продолжает расти
У меня есть исключение памяти в этом случае? или это нормально, что размер кучи продолжает расти?
1 ответ
Размер кучи является своего рода зарезервированной памятью, которую вы можете использовать. Выделенная память является фактической используемой памятью.
Когда выделенная память приближается к размеру кучи, и вы видите падение выделенной памяти, объекты собираются мусором. Размер кучи немного увеличится, поскольку вам, вероятно, потребуется больше памяти, чем зарезервировано в данный момент.
В конце концов, если вы продолжите выделять память, не освобождая ее, размер кучи и выделенная память будут расти до тех пор, пока система не исчерпает память (для вашего приложения). В этот момент OutOfMemoryException
будет брошено, и ваше приложение будет зависать.
Читать Управление памятью вашего приложения | Разработчики Android для более глубокого понимания.