Zarządzanie pamięcią
Wycieki pamięci, cleanup, useEffect cleanup, listeners, timers, obsługa dużych obrazów
1Czym jest memory leak (wyciek pamięci) w aplikacji React Native?
Czym jest memory leak (wyciek pamięci) w aplikacji React Native?
Odpowiedź
Memory leak występuje, gdy obiekty w pamięci nie są już używane przez aplikację, ale nie mogą zostać zwolnione przez garbage collector, ponieważ wciąż istnieją referencje do tych obiektów. W React Native zdarza się to najczęściej przy niewyczyszczonych subscription, timerach wciąż aktywnych po unmount lub closure przechwytujących nieaktualne referencje. Memory leaki stopniowo pogarszają wydajność i mogą powodować crashe podczas długich sesji.
2Jaką rolę pełni funkcja zwracana (cleanup function) w useEffect w zarządzaniu pamięcią?
Jaką rolę pełni funkcja zwracana (cleanup function) w useEffect w zarządzaniu pamięcią?
Odpowiedź
Cleanup function zwracana przez useEffect jest wykonywana przed unmount komponentu lub przed ponownym wykonaniem efektu z nowymi zależnościami. Jej głównym zadaniem jest sprzątanie zasobów zaalokowanych przez efekt: anulowanie subscription, clearTimeout/clearInterval, usuwanie event listenerów lub przerywanie trwających żądań. Bez tego sprzątania te zasoby nadal istnieją w pamięci i mogą próbować zaktualizować odmontowany komponent.
3Dlaczego ważne jest używanie clearTimeout i clearInterval w cleanup function useEffect?
Dlaczego ważne jest używanie clearTimeout i clearInterval w cleanup function useEffect?
Odpowiedź
Timery utworzone za pomocą setTimeout i setInterval nadal działają nawet po unmount komponentu. Jeśli callback timera próbuje zaktualizować state odmontowanego komponentu, wyzwala ostrzeżenie 'Can't perform a React state update on an unmounted component' i stanowi memory leak. Timer utrzymuje referencję do callbacka i jego closure, uniemożliwiając garbage collectorowi zwolnienie tych zasobów. Użycie clearTimeout/clearInterval w cleanup zapewnia poprawne anulowanie tych timerów.
Jak zapobiegać memory leakom podczas korzystania z event listenerów w React Native?
Jaki wpływ mają closures na zarządzanie pamięcią w komponentach React Native?
+17 pytań z rozmów
Inne tematy rekrutacyjne React Native
Podstawy JavaScript
Podstawy React
Podstawy React Native
React Hooks
TypeScript dla React i React Native
Komponenty i API React Native
Stylowanie i układ w React Native
Nawigacja w React Native
Zarządzanie stanem w React Native
Networking i API w React Native
Trwałość danych
Formularze i walidacja
Animacje React Native
Native Modules & Bridge
Kod specyficzny dla platformy
Uprawnienia i interfejsy API urządzenia
Push Notifications
Testowanie React Native
Debugowanie React Native
Build & Deployment
Expo vs React Native Bare
Optymalizacja wydajności
Architecture Patterns
New Architecture w React Native
Najlepsze praktyki bezpieczeństwa
Offline-First Architecture
CI/CD React Native
Monorepo i współdzielenie kodu
Zaawansowane tematy
Cykl życia aplikacji i wykonywanie w tle
Uwierzytelnianie i zarządzanie sesją
Monitoring & Crash Reporting
Opanuj React Native na następną rozmowę
Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.
Zacznij za darmo