ScholarGate
어시스턴트

가비지 컬렉션 및 메모리 관리

메모리 관리는 프로그램이 메모리를 할당하고 회수하는 방식을 제어하며, 가비지 컬렉션은 더 이상 접근할 수 없는 객체를 식별하고 해제함으로써 회수 과정을 자동화합니다.

PaperMind(으)로 주제 찾기곧 제공Find papers & topics
Tools & resources
슬라이드 다운로드
Learn & explore
동영상곧 제공

Definition

메모리 관리는 프로그램 메모리의 할당 및 회수를 의미하며, 가비지 컬렉션은 프로그램이 더 이상 접근할 수 없는 객체가 차지하는 메모리를 해제하여 프로그래머가 명시적인 할당 해제 작업을 수행할 필요가 없도록 하는 자동 회수 방식입니다.

Scope

이 주제는 언어 런타임을 위한 자동 및 수동 메모리 관리를 다룹니다: 참조 카운팅, 마크-스윕, 복사, 세대별 컬렉션; 도달 가능성 추적; 처리량, 일시 중지 시간 및 메모리 오버헤드 간의 절충. 또한 동시 및 점진적 컬렉터와 컬렉션 전략 및 언어 설계 간의 관계를 다룹니다.

Core questions

  • 컬렉터는 어떤 객체가 여전히 필요한지 어떻게 판단합니까?
  • 처리량, 지연 시간 및 메모리 사용량 간의 절충점은 무엇입니까?
  • 객체를 연령별로 분리하는 것(세대별 컬렉션)이 효율성을 향상시키는 이유는 무엇입니까?
  • 컬렉션이 대화형 또는 실시간 시스템에서 긴 일시 중지를 피하는 방법은 무엇입니까?

Key theories

추적 가비지 컬렉션
매카시(McCarthy)는 Lisp를 위해 자동 가비지 컬렉션을 도입하여 프로그램의 루트에서 도달 가능한 객체를 추적하여 메모리를 회수하는 개념을 확립했습니다.
세대별 컬렉션
리버만(Lieberman)과 휴잇(Hewitt)은 대부분의 객체가 일찍 소멸된다는 것을 관찰하고, 젊은 세대를 더 자주 수집함으로써 실제 컬렉션 비용을 극적으로 줄일 수 있다고 제안했습니다(세대 가설).
컬렉션 기술의 분류
윌슨(Wilson)과 가비지 컬렉션 핸드북(Garbage Collection Handbook)은 참조 카운팅, 마크-스윕, 복사, 점진적 및 동시 컬렉터의 설계 공간과 성능 절충점을 체계화합니다.

Clinical relevance

자동 메모리 관리는 매달린 포인터(dangling pointers) 및 메모리 누수(memory leaks)와 같은 전체적인 버그 클래스를 제거하며, 이것이 대부분의 고급 언어가 가비지 컬렉션에 의존하는 이유입니다. 컬렉터 선택은 특히 대화형 및 서버 시스템에서 애플리케이션 지연 시간과 처리량에 큰 영향을 미칩니다.

History

매카시(McCarthy)는 1960년 Lisp와 함께 가비지 컬렉션을 도입했습니다. 이후 복사 컬렉션(Cheney)과 참조 카운팅이 등장했으며, 리버만(Lieberman)과 휴잇(Hewitt)의 1983년 세대별 컬렉터는 객체 수명을 활용했습니다. 이후 수십 년 동안 점진적, 동시 및 영역 기반 컬렉터가 개발되었으며, 이는 1992년 윌슨(Wilson)의 저서와 2011년 가비지 컬렉션 핸드북(Garbage Collection Handbook)에 포괄적으로 정리되어 있습니다.

Debates

자동 컬렉션 대 수동 또는 소유권 기반 관리
설계자들은 안전하고 편리하지만 일시 중지 및 오버헤드를 유발할 수 있는 가비지 컬렉션과, 프로그래머의 부담과 위험을 감수하는 대신 예측 가능한 성능과 낮은 메모리 사용량을 제공하는 수동 또는 소유권 기반 관리 사이에서 논쟁합니다.

Key figures

  • John McCarthy
  • Henry Lieberman
  • Carl Hewitt
  • Richard Jones
  • Paul Wilson

Related topics

Seminal works

  • mccarthy1960
  • lieberman1983
  • wilson1992
  • jones2011

Frequently asked questions

가비지 컬렉터는 어떤 객체를 해제해야 하는지 어떻게 압니까?
추적 컬렉터는 스택 변수 및 전역 변수와 같은 알려진 루트에서 시작하여 참조를 따라 모든 도달 가능한 객체를 표시합니다. 도달하지 못한 모든 것은 도달 불가능하며 회수될 수 있습니다.
세대별 가비지 컬렉션이 효과적인 이유는 무엇입니까?
대부분의 객체는 할당 직후 도달 불가능해지기 때문에, 젊은 세대를 자주 수집하면 대부분의 가비지를 저렴하게 회수할 수 있으며, 오래 살아남은 객체는 훨씬 덜 자주 스캔됩니다.

Methods for this concept

Related concepts