Miyeon

메모리 누수는 왜 발생하는가

2021-12-30JS

메모리 누수가 무엇인가

애플리케이션에서 더 이상 사용되지도 않으면서 반환되지 않는 메모리를 뜻한다.

메모리 누수의 문제가 무엇인가

  • 애플리케이션 속도 저하
  • 예기치 못한 종료
  • 느린 응답 속도

자바스크립트에서는 메모리를 어떻게 관리할까

자바스크립트는 가비지 컬렉트 언어이다. 가비지 콜렉터가 할당한 메모리 공간을 애플리케이션에서 사용중인지 주기적으로 검사하여 더 이상 사용되지 않는 메모리를 해제시켜 관리한다.

그렇다면 자바스크립트에서 메모리 누수는 언제 발생하는가

예상치 못한 참조를 할 때 발생한다. 여기서 예상치 못한 참조는 더 이상 사용되지 않아 해제될 수 있는 메모리를 뜻한다.

흔한 자바스크립트 메모리 누수 4가지

  • 의도하지 않은 전역 변수

    • 선언하지 않은 변수에 대한 참조는 글로벌 객체 내부에 새로운 변수 생성을 의미한다.
    • 일반 함수 내부의 this
  • 잊혀진 타이머 또는 콜백

    • setInterval
    • 사용되지 않는 요소, 이벤트핸들러
  • DOM 외부에서의 참조
  • 클로저

    • 클로저 = 상위 스코프의 변수에 접근 가능한 것

크롬 개발자 도구를 활용해서 메모리 누수를 찾는 방법

  • Profile
  • Memory

참고

자바스크립트 메모리 누수와 해결 방법