Выбор ответа Middle Отладка и профилирование обновлено

Поиск утечки памяти

Вопрос

После десятка открытий и закрытий экрана чата память растёт и не освобождается. Что делать?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Сравнить снимки кучи и найти, кто удерживает объекты. Сравнение снимков памяти показывает объекты, которые должны были исчезнуть вместе с экраном, а путь удержания показывает, кто их держит: незакрытый WebSocket, setInterval, подписка на AppState или нативный эмиттер.

Варианты ответа

  1. Перезапускать приложение раз в час, чтобы память освобождалась
  2. Отключить сборщик мусора на этом экране, чтобы он не мешал
  3. Увеличить windowSize у списка сообщений в чате
  4. Сравнить снимки кучи и найти, кто удерживает объектыправильный ответ

Разбор

Сравнение снимков памяти показывает объекты, которые должны были исчезнуть вместе с экраном, а путь удержания показывает, кто их держит: незакрытый WebSocket, setInterval, подписка на AppState или нативный эмиттер. Перезапуск лишь маскирует проблему, сборщик мусора не отключают, а windowSize увеличит потребление.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.