가비지 컬렉터(GC)는 객체 할당 및 메모리 회수를 담당하며, 루비는 현재 마크-스윕-컴팩트(Mark-Sweep-Compact) 알고리즘을 사용하여 메모리를 관리합니다. 그러나 기존 루비 GC는 참조 카운팅, 세미-스페이스 카피 등 고성능 알고리즘 통합의 어려움, 단일 스레드 GC로 인한 성능 병목, 그리고 제한적인 객체 크기 할당 방식 등 여러 한계를 가지고 있습니다.
이를 해결하기 위해 루비는 기존 GC를 대체하는 대신, 루비 3.4에 모듈형 가비지 컬렉터(Modular Garbage Collectors)를 실험적으로 도입했습니다. 이 시스템은 기존 GC 코드를 VM 인터페이스와 실제 GC 구현 부분으로 분리하여, GC 구현이 공유 라이브러리 형태로 로드되고 모듈형 GC API를 통해 루비 VM과 통신하도록 합니다. 이 API는 GC 구현체가 필수적으로 구현해야 할 함수들과 루비 내부 기능을 활용할 수 있는 함수들로 구성됩니다.
모듈형 GC API를 활용하는 첫 외부 GC 구현체는 러스트(Rust) 기반의 MMTK(Memory Management Toolkit)입니다. MMTK는 다양한 GC 알고리즘(Plans)을 제공하며, 워크 패킷(Work Packet) 개념을 통해 병렬 처리를 지원합니다. 현재 루비용 MMTK 구현은 초기 단계로 기존 GC보다 성능이 낮지만, 향후 객체 이동 지원, 세대별 GC 구현, 워크 패킷 세분화 및 스레드 안전성 확보를 통해 성능을 크게 개선할 계획입니다.