Как устроена память в Android
В Android память делится на две основные области: стек и куча.
- Стек (Stack):
- В стеке хранятся примитивные типы данных (int, char, boolean) и ссылки на объекты в куче.
- Каждый поток исполнения приложения имеет свой собственный стек.
- Стек работает по принципу LIFO "Last In, First Out" (последним пришел — первым ушел).
- Используется для хранения локальных переменных методов, а также для управления вызовами методов (включая рекурсивные вызовы).
- Куча (Heap):
- В куче располагаются объекты Java (классы и массивы), созданные во время выполнения приложения.
- Это область памяти, в которой объекты хранятся дольше всего.
- Память в куче выделяется динамически по мере необходимости и освобождается сборщиком мусора, когда объекты больше не используются.
- Куча разделяется между всеми потоками исполнения приложения.
Эти две области работают вместе, обеспечивая выполнение приложения. Переменные и объекты размещаются в памяти в зависимости от их времени жизни и области видимости. Стек обеспечивает быстрый доступ к локальным переменным и управляет вызовами методов, в то время как куча позволяет динамически создавать и управлять объектами в течение жизни приложения.