아카이브사이트맵
© 2026 Rayon. All rights reserved.
DevDay
아티클랭킹스페이스채용
요즘IT favicon요즘IT

자바스크립트 GC, 제대로 알고 쓰자!

by DD
2025-10-22
9개월 전
조회수 12

자바스크립트 GC는 자동 메모리 관리 방식이나, 개발자의 실수로 메모리 누수 발생 가능

참조 카운트 방식의 한계를 극복한 마크 앤 스윕 알고리즘 소개

클로저, 이벤트 리스너, DOM 참조 등 실무에서 흔한 메모리 누수 원인 분석

자바스크립트 GC의 작동 원리

자바스크립트 GC는 마크 앤 스윕 알고리즘을 기반으로 불필요한 메모리를 해제한다. 구체적으로 루트 객체로부터 도달 가능한 객체를 마킹하고, 마킹되지 않은 객체를 메모리 해제 대상으로 판단한다. 따라서 순환 참조 문제 해결 및 메모리 효율성을 높인다.

메모리 누수 발생 원인 분석

클로저, 이벤트 리스너, DOM 참조는 GC가 객체를 해제하지 못하게 하는 주요 원인이다. 클로저는 불필요한 변수를 계속 참조하고, 는 DOM 요소 제거 후에도 메모리를 점유한다. 따라서 를 유발하여 를 초래한다.

이벤트 리스너
메모리 누수
성능 저하

실무에서 메모리 누수 방지 전략

Chrome DevTools의 Memory 탭을 활용하여 메모리 누수를 탐지하고 해결한다. Heap snapshot으로 객체 점유 현황을 파악하고, Allocation instrumentation으로 메모리 할당/해제를 추적한다. 따라서 useEffect cleanup 함수를 활용하여 이벤트 리스너 해제를 자동화한다.

실무자를 위한 자바스크립트 ‘가비지 컬렉션’ 가이드
중급
기술
JavaScript
Frontend
원문 읽기
원문 읽기

댓글 0

첫 번째 댓글을 남겨보세요!

관련 추천 글

자바스크립트(JavaScript)를 바꾼 숨겨진 영웅, 제레미 애쉬케너스(Jeremy Ashkenas)를 만나보세요!

파이어쉽 로고

12,000+ 스타 JavaScript 라이브러리 toastr-next v3, 부활!

데브투 로고

ClojureScript, async/await 지원으로 JavaScript 생태계와 더 가까워지다!

해커뉴스 로고

자바스크립트(JavaScript)로 구현한 파라메트릭 CAD, FluidCAD

해커뉴스 로고

자바스크립트(JavaScript) 의존성 팽창, 왜 일어날까?

해커뉴스 로고

자바스크립트(JavaScript) 의존성 붓기(Bloat), 왜 생기는 걸까?

랍스타즈 로고
요즘IT favicon요즘IT
중급
기술
JavaScript
Frontend

관련 추천 글

자바스크립트(JavaScript)를 바꾼 숨겨진 영웅, 제레미 애쉬케너스(Jeremy Ashkenas)를 만나보세요!

파이어쉽 로고

12,000+ 스타 JavaScript 라이브러리 toastr-next v3, 부활!

데브투 로고

ClojureScript, async/await 지원으로 JavaScript 생태계와 더 가까워지다!

해커뉴스 로고