Bun's Founder Shares AMAZING JS Memory Leak Debugging Tips
- 메모리 누수는 앱을 느리게 만들고 결국 충돌시킬 수 있음 🐌.
- Bun 창업자의 팁: v8의
writeHeapSnapshot
함수를 사용하여 힙 스냅샷 파일을 생성하고 Chrome DevTools에서 비교 모드로 분석 🔍.
- 힙 스냅샷 비교 시 델타 열에서 높은 숫자로 계속 증가하는 항목은 메모리 누수 가능성이 있음 📈.
- Bun의
heapStats
함수는 JavaScriptCore에서 직접 데이터를 가져와 힙 크기, 용량, 객체 수 등을 보여줌 📊.
- 특정 타입의 객체 수가 비정상적으로 높고 줄어들지 않으면 잠재적인 문제일 수 있음 ⚠️.
- 불변 데이터에는 스트림 대신 Blob을 사용하고, 이벤트 리스너에 대한 정리 함수를 추가하며, abort 리스너에 큰 데이터 구조를 추가하는 것을 피해야 함 🧹.
heapStats
의 특정 필드를 로깅하고 모니터링하여 메모리 임계값을 초과할 경우 알림을 받을 수 있음 🔔.