iOS использует иерархическую структуру памяти с несколькими типами:
-
ОЗУ (Оперативная Память):
- Быстрый, энергозависимый тип памяти.
- Используется для хранения активно работающих приложений и данных.
- Управляется операционной системой и механизмом ARC (Automatic Reference Counting) для объектов Swift/Objective-C.
- При нехватке памяти система может выгружать (терминировать) наименее активные приложения.
-
Встроенная Память (NAND Flash):
- Медленнее ОЗУ, но энергонезависимая.
- Используется для хранения операционной системы, приложений, пользовательских данных (фото, видео, документы).
- Имеет ограниченный ресурс по количеству циклов перезаписи.
-
Кэш-память (L1, L2, L3):
- Очень быстрая память на уровне процессора.
- Используется для хранения часто используемых инструкций и данных для ускорения доступа к ОЗУ.
ARC (Automatic Reference Counting)
- Механизм управления памятью в Swift и Objective-C, который автоматически отслеживает и управляет ссылками на объекты.
- Каждый объект имеет счетчик ссылок. Когда счетчик достигает нуля, память, занимаемая объектом, освобождается.
- Предотвращает утечки памяти, но требует внимательности при работе с циклическими сильными ссылками (
strong reference cycles
), которые можно разрешать с помощью weak
или unowned
ссылок.
Virtual Memory
- iOS использует виртуальную память, позволяя программам использовать адресное пространство большее, чем физически доступная ОЗУ.
- Страницы памяти могут быть перенесены между ОЗУ и файловой системой (хотя в iOS это происходит ограниченно