더북(TheBook)

C나 C++ 같은 언어에는 사용하는 특정 자료 구조뿐 아니라 메모리의 정확한 수명을 제어하는 매우 정교한 방법들이 있습니다. 즉, 메모리에서 객체 할당 및 해제를 완벽하게 제어할 수 있습니다. 반면에 자바스크립트에서는 객체의 수명을 가비지 컬렉터가 제어합니다. 가비지 컬렉터는 애플리케이션을 실행하는 런타임 엔진에서 작동하는 프로세스로, 주기적으로 실행되어 사용되지 않는 참조와 관련된 메모리를 해제합니다. 가비지 컬렉터는 다양한 객체 사이에 유지되는 참조를 추적하여 그 작업을 수행하는데, 이를 참조 카운팅(reference counting)이라고 합니다. 가비지 컬렉터가 더 이상 참조되지 않는 객체를 감지하면 해당 객체는 메모리 해제 대상이 되고 사용되지 않는 참조를 찾지 못하면 메모리 누수가 발생합니다. 메모리 누수는 일반적으로 엉성한 설계나 참조 추적의 지표가 되며, 누수 시점에 애플리케이션이 응답하지 않아 사용자 또는 시스템이 애플리케이션을 중단하는 원인이 됩니다.

Warning

자동 가비지 컬렉션의 개념은 자바스크립트 개발자가 메모리 관리에 신경 쓸 필요가 없다는 잘못된 인상을 줍니다. 이로 인해 개발자가 이벤트 처리 코드를 작성할 때 실수를 하게 됩니다. RxJS를 사용하면 DOM과 같은 이벤트 이미터에 연결된 리스너를 구독 취소하거나 효과적으로 정리하는 메커니즘을 구현하여 이를 예방할 수 있습니다.

 

구형 브라우저에서, 특히 인터넷 익스플로러의 이벤트 처리 시스템에서 메모리 누수는 큰 문제였습니다. 최신 브라우저에서는 훨씬 효율적으로 메모리를 관리할 수 있게 되었고, RxJS와 같은 라이브러리는 이러한 문제를 방지하게끔 조정되었습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.