М
Мобильная разработка #1
@developer_mobila3.9K подп.
724просмотров
18.4%от подписчиков
9 февраля 2026 г.
📷 ФотоScore: 796
🧟‍♂️ Зомби в вашем коде: Почему приложение «пухнет» со временем Бывало такое? Вы открыли экран, закрыли его, а память не освободилась. Сделали так 10 раз и приложение упало. Поздравляю, у вас Memory Leak (Утечка памяти). Это происходит, когда объект (например, тяжелая Activity или ViewController) уже не нужен пользователю, но сборщик мусора (GC) не может его удалить, потому что кто-то другой всё еще держит на него ссылку. Главные причины утечек (Checklist): 🛑 Android: 1. Static Context: Никогда не сохраняйте Context или View в статические переменные! • Плохо: companion object { var myView: TextView? = null } - это удержит всю Activity в памяти навсегда. 2. Забытые слушатели: Если вы подписались на синглтон (LocationManager.addListener(this)), но забыли отписаться в onDestroy - Activity останется жить вечно. 3. Внутренние классы: Анонимные классы (например, Handler или AsyncTask) неявно хранят ссылку на внешний класс. 🛑 iOS: 1. Retain Cycles (Циклы сильных ссылок): Объект А держит Б, а Б держит А. Они никогда не удалятся. • Классика: Вы передали self внутрь замыкания (closure), которое сохранено в свойстве этого же класса. • Лечение: Всегда используйте [weak self] внутри клоужеров, если есть риск цикла. 🛠 Инструменты для поиска (Без них вы слепы): 🐤 Android - LeakCanary: Библиотека от Square. Must-have в любом debug-билде. Она автоматически следит за Activity/Fragment. Если происходит утечка, она присылает уведомление (буквально кричит), дампит память и показывает красивое дерево ссылок: кто именно держит ваш объект. 📊 iOS - Memory Graph Debugger: В Xcode есть встроенная кнопка (три шарика, соединенных линиями) в нижней панели дебага. Нажимаете её во время работы приложения - и Xcode показывает граф всех объектов в памяти. Ищите фиолетовые восклицательные знаки (⚠️) - это утечки. 💡 Совет: Утечки памяти коварны тем, что на мощном телефоне разработчика они незаметны. А у пользователя на старом Android с 3 ГБ RAM приложение вылетит через 5 минут. Проверяйте память хотя бы раз в спринт. А вы используете [weak self] везде «на всякий случай» или только там, где нужно? 👇 #memory #performance #leaks #leakcanary #ios #android #middle #optimization 👉 @developer_mobila
724
просмотров
2213
символов
Да
эмодзи
Да
медиа

Другие посты @developer_mobila

Все посты канала →
🧟‍♂️ Зомби в вашем коде: Почему приложение «пухнет» со врем — @developer_mobila | PostSniper