ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

가비지 콜렉션


프로그램에서 더 이상 사용하지 않는 메모리 자동으로 정리합니다.

 

메모리 공간을 꽉 채우면, 메모리 누수 로 인해 문제 (속도 저하, 예기치 못한 종료, 느린 응답속도 etc) 가 발생합니다. 

프로그래머라면 방지하고 버그가 있을 시, 잡아야 합니다.

 

" 가비지 콜렉션  은 대신 해줍니다. "

managed language < - > unmanaged language

 

How?


1. 트레이싱  (mark and sweep)

객체에 flag 를 표시하고, 사이클마다 메모리 관리자가 객체를 추적해 사용 여부를 확인해 mark (표시)를 합니다.

이후 표시되지 않은 객체는 sweep (삭제) 해 메모리를 해체합니다.

 

2. 래퍼런스 카운팅 방법

객체를 참조하는 변수의 수를 추적하는 방법입니다.

변수의 래퍼런스가 복사되면 카운트 가 늘어나고, 변수 값의 변경이나 변수 스코프를 벗어났을 때 카운트 가 줄어듭니다.

래퍼런스  카운트가 0이면, 메모리를 비웁니다. 
왜 메모리 누수가 일어나는가 ?

순환참조 하지 마세요.

변수들이 서로 참조할 시 래퍼런스 카운팅이 되지 못해 메모리를 비울 수 없습니다.
ex) 지양합니다.

const any = {};
const some = {};
any.other = some;
some.other = any;​


" 가비지 콜렉션은 완벽하게 메모리 정리를 하지는 못하니 메모리 관리에 신경을 써야 합니다. "

728x90