Управління пам'яттю
Витоки пам'яті, cleanup, useEffect cleanup, listeners, timers, обробка великих зображень
1Що таке memory leak (витік пам'яті) у застосунку React Native?
Що таке memory leak (витік пам'яті) у застосунку React Native?
Відповідь
Memory leak виникає, коли об'єкти в пам'яті більше не використовуються застосунком, але не можуть бути звільнені garbage collector, оскільки посилання на ці об'єкти все ще існують. У React Native це часто трапляється з неочищеними subscription, timer'ами, що залишаються активними після unmount, або closure, які захоплюють застарілі посилання. Memory leak поступово погіршують продуктивність і можуть спричиняти крахи під час тривалих сесій.
2Яку роль відіграє функція повернення (cleanup function) у useEffect для керування пам'яттю?
Яку роль відіграє функція повернення (cleanup function) у useEffect для керування пам'яттю?
Відповідь
Cleanup function, яку повертає useEffect, виконується перед тим, як компонент буде unmount, або перед повторним виконанням ефекту з новими залежностями. Її основна роль — очистити ресурси, виділені ефектом: скасувати subscription, clearTimeout/clearInterval, видалити event listener або перервати запити, що виконуються. Без цього очищення ці ресурси продовжують існувати в пам'яті й можуть намагатися оновити розмонтований компонент.
3Чому важливо використовувати clearTimeout і clearInterval у cleanup function useEffect?
Чому важливо використовувати clearTimeout і clearInterval у cleanup function useEffect?
Відповідь
Timer'и, створені за допомогою setTimeout і setInterval, продовжують виконуватися навіть після unmount компонента. Якщо callback timer'а намагається оновити state розмонтованого компонента, це спричиняє попередження 'Can't perform a React state update on an unmounted component' і є memory leak. Timer зберігає посилання на callback і його closure, перешкоджаючи garbage collector звільнити ці ресурси. Використання clearTimeout/clearInterval у cleanup забезпечує коректне скасування цих timer'ів.
Як запобігти memory leak під час використання event listener у React Native?
Який вплив мають closures на керування пам'яттю в компонентах React Native?
+17 питань зі співбесід
Інші теми співбесід React Native
Основи JavaScript
Основи React
Основи React Native
React Hooks
TypeScript для React та React Native
Компоненти та API React Native
Стилізація та макет у React Native
Навігація в React Native
Управління станом у React Native
Networking та API в React Native
Збереження даних
Форми та валідація
Анімації React Native
Native Modules & Bridge
Код, специфічний для платформи
Дозволи та API пристрою
Push Notifications
Тестування React Native
Налагодження React Native
Build & Deployment
Expo vs React Native Bare
Оптимізація продуктивності
Architecture Patterns
React Native New Architecture
Найкращі практики безпеки
Offline-First Architecture
CI/CD React Native
Monorepo та спільне використання коду
Складні теми
Життєвий цикл застосунку та фонове виконання
Автентифікація та керування сесіями
Monitoring & Crash Reporting
Опануй React Native для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно