데브코스/영상과제
가비지 컬렉터가 뭐하는 건가요? (Feat. 메모리 관리)
민발자
2024. 12. 6. 08:38
728x90
https://youtu.be/24f2-eJAeII?si=6s_nM0nzJ_bRJojn
메모리 관리가 필요한 이유
컴퓨터의 메모리는 제한적으로 효율적으로 관리하지 않으면 프로그램 실행이 느려지거나 시스템이 멈출 수 있음
여러 프로그램을 동시에 실행하려면 메모리 자원을 효과적으로 분배해야 함
특히 장시간 실행되는 서버 프로그램에서는 메모리 관리가 필수
메모리 누수 Memory Leak
사용하지 않는 메모리를 적절하게 해제하지 않으면 메모리 누수 발생
메모리 누수가 누적되면 성능저하와 충돌 발생
메모리 관리 방식
numanaged language 수동 메모리 관리
C, C++ 같은 언어는 개발자가 메모리 할당과 해제를 직접 관리
managed language 자동 메모리 관리
자바, 파이썬과 같은 언어는 메모리 관리를 가비지 컬렉터가 자동으로 처리
가비지 컬렉터 Garbage Collector
필요하지 않은 메모리를 자동으로 해제
메모리 누수를 방지하고 시스템 자원을 효율적으로 관리
동작 방식
Mark-and-sweep : 객체를 마크하고 필요 없는 객체를 제거
Reference countindg 참조 카운팅 : 객체가 몇 번 참조되는지 기록하고 참조 횟수가 0이 되면 메모리에서 제거
메모리 관리에서 개발자가 신경 써야 할 점
가비지 컬렉터가 모든 메모리 누수를 방지해주지 않는다
어느 정도 개발언어와 환경에 맞춰 메모리 관리가 필요
순환 참조 방지 : 순환 참조하게 되면 참조 카운팅이 0이 될 수 없음 약한 참조를 사용하여 순환 참조 방지
728x90