---
id: P-REINFORCE-AUTO-735166
category: "[[10_Wiki/💡 Topics/Programming & Language]]"
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - Scavenger(마이너 GC)"
---

# [[Scavenger(마이너 GC)]]

## 📌 한 줄 통찰 (The Karpathy Summary)
> 지식 요약 정보 추출 중...

## 📖 구조화된 지식 (Synthesized Content)
*   **동작 원리와 체니의 알고리즘 (Cheney's Algorithm)**
    대부분의 Scavenge 구현은 체니의 알고리즘(Cheney's algorithm)을 기반으로 한 반공간(semi-space) 설계를 따릅니다 [2, 4]. 새로운 공간은 크기가 같은 두 개의 공간인 To-Space와 From-Space로 나뉩니다 [4, 6, 7]. 평소에는 객체가 From-Space에 할당되다가 이 공간이 가득 차면, 가비지 컬렉터는 From-Space의 살아있는 객체들을 To-Space의 연속된 메모리 블록으로 대피(evacuate)시킵니다 [4, 5, 7]. 이후 죽은 객체들이 있는 From-Space는 완전히 비워지며 두 공간의 역할이 바뀝니다 [5, 8, 9].
*   **객체 이동, 포인터 업데이트 및 승격 (Promotion)**
    활성 객체가 새 위치로 이동될 때, 원래 위치에는 새로운 주소를 가리키는 포워딩 주소(forwarding address)가 남겨져 이를 참조하던 다른 포인터들이 업데이트될 수 있도록 합니다 [9-11]. 두 번의 마이너 가비지 컬렉션 주기(스캐빈지)를 생존한 객체들은 장기 보관을 위해 '오래된 공간(Old Space 또는 Tenure 영역)'으로 승격(Promoted)됩니다 [1, 3, 5]. 객체들을 To-Space의 한쪽으로 모으면서 단편화가 해결되므로 캐시 지역성이 향상되고 할당 속도가 유지됩니다 [4].
*   **루트 스캔 및 병렬 처리 (Parallel Scavenging)**
    마이너 GC는 매우 짧은 시간 내에 수행되어야 합니다 [4]. 이를 위해 V8 엔진은 다수의 도우미 스레드(helper threads)를 활용한 병렬 스캐빈징(Parallel scavenging) 기법을 사용하여, 루트 스캔, 젊은 세대 내의 객체 복사, 오래된 세대로의 승격, 포인터 업데이트 작업을 병렬적으로 처리합니다 [12-14]. 메인 스레드와 도우미 스레드들은 원자적(atomic)인 읽기/쓰기/비교 교환(compare-and-swap) 연산을 통해 동기화하여 동일한 객체가 중복 이동되는 것을 방지합니다 [12].
*   **IBM SDK 환경에서의 스캐빈지**
    IBM의 gencon GC 정책 등에서도 스캐빈지 작업이 존재하며, 이는 Nursery 영역에서 할당 실패가 발생할 때 트리거됩니다 [3]. 루트 스캔을 통해 도달 가능한 객체를 찾고 스택에 담은 뒤 계층적 스캔 순서(hierarchical scan ordering)를 사용해 추적하며, 살아있는 객체를 할당 공간에서 Survivor 공간이나 Tenure 영역으로 복사하는 방식으로 처리됩니다 [3].

## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.

## 🔗 지식 연결 (Graph)
- **Related Topics:** [[New Space(Young Generation)]], [[Cheney's Algorithm]], [[Promotion(승격)]], [[Major GC(Mark-Sweep/Mark-Compact)]]
- **Projects/Contexts:** [[V8 JavaScript Engine]], [[IBM SDK (gencon GC policy)]]
- **Contradictions/Notes:** 소스 간의 내용 모순은 발견되지 않았습니다. V8 엔진의 마이너 GC 메커니즘과 IBM SDK(gencon 정책)의 스캐빈지 작업은 구현 환경은 다르지만, 모두 '주로 새롭게 할당되는 작은 공간을 대상으로 하여 빠른 주기로 살아있는 객체를 복사 및 승격한다'는 공통된 역할을 성공적으로 수행하고 있습니다.

---
*Last updated: 2026-04-19*
- Raw Source: [[00_Raw/2026-04-20/Scavenger(마이너 GC).md]]
---
