메모리 누수는 왜 발생하는가
메모리 누수가 무엇인가
애플리케이션에서 더 이상 사용되지도 않으면서 반환되지 않는 메모리를 뜻한다.
메모리 누수의 문제가 무엇인가
- 애플리케이션 속도 저하
- 예기치 못한 종료
- 느린 응답 속도
자바스크립트에서는 메모리를 어떻게 관리할까
자바스크립트는 가비지 컬렉트 언어이다. 가비지 콜렉터가 할당한 메모리 공간을 애플리케이션에서 사용중인지 주기적으로 검사하여 더 이상 사용되지 않는 메모리를 해제시켜 관리한다.
그렇다면 자바스크립트에서 메모리 누수는 언제 발생하는가
예상치 못한 참조를 할 때 발생한다. 여기서 예상치 못한 참조는 더 이상 사용되지 않아 해제될 수 있는 메모리를 뜻한다.
흔한 자바스크립트 메모리 누수 4가지
-
의도하지 않은 전역 변수
- 선언하지 않은 변수에 대한 참조는 글로벌 객체 내부에 새로운 변수 생성을 의미한다.
- 일반 함수 내부의 this
-
잊혀진 타이머 또는 콜백
- setInterval
- 사용되지 않는 요소, 이벤트핸들러
- DOM 외부에서의 참조
-
클로저
- 클로저 = 상위 스코프의 변수에 접근 가능한 것
크롬 개발자 도구를 활용해서 메모리 누수를 찾는 방법
- Profile
- Memory