Instruments (Leaks): Основной инструмент в Xcode для профилирования и обнаружения утечек памяти. Отображает выявленные утечки, циклические ссылки и другие проблемы с управлением памятью.
Мемори граф в DEBUG Navigatorе: Визуальное представление графа объектов в памяти во время выполнения приложения. Помогает выявлять циклические ссылки, заставляющие ARC сохранять объекты, даже если они больше не нужны. Можно использовать для поиска нереференсных объектов.
Address Sanitizer (ASan): Инструмент во время компиляции и исполнения, который обнаруживает ошибки памяти, включая use-after-free, double-free и heap-buffer-overflow. Хотя напрямую не ищет утечки, помогает найти ошибки, которые могут привести к утечкам.
Static Analyzer: Встроенный в Xcode инструмент статического анализа кода, который может выявить потенциальные проблемы с памятью, включая ошибки подсчета ссылок и неинициализированные переменные, до запуска приложения.
**Heaps: ** В Instruments, отображает все живые объекты в памяти и их связи. Полезен для выявления объектов, которые должны быть уничтожены, но все еще существуют.
Пользовательский код для отслеживания ссылок: Реализация собственных механизмов отслеживания жизненного цикла объектов, например, логирование их deinit методов, для выявления объектов, которые не освобождаются ожидаемо.
swift
Unit/UI тесты: Создание специализированных тестов, которые проверяют, что объекты правильно освобождаются после завершения их жизненного цикла или выполнения определенной задачи. Запуск этих тестов с включенными Instrument Leaks или Memory Graph.
Review кода: Регулярный просмотр кода на предмет потенциальных проблем с управлением памятью, таких как сильные циклические ссылки, неправильное использование замыканий (capture lists) и делегатов.
Проверка слабых ссылок и ссылок без владения: Убедиться, что ссылки на делегаты, замыкания и другие объекты, которые могут создать циклические ссылки, правильно помечены как weak или unowned.
swift