Как устроена память в Android

В Android память делится на две основные области: стек и куча.

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

Эти две области работают вместе, обеспечивая выполнение приложения. Переменные и объекты размещаются в памяти в зависимости от их времени жизни и области видимости. Стек обеспечивает быстрый доступ к локальным переменным и управляет вызовами методов, в то время как куча позволяет динамически создавать и управлять объектами в течение жизни приложения.

Для очистки памяти используется Garbage Collector