Guile GC 힙 크기 휴리스틱: 라이브락 이야기

2025-05-26

Guile 프로젝트는 Nofl 기반의 보수적인 스캔 방식 가비지 컬렉터를 통합하고 있습니다. 현재 확장 가능한 힙 정책을 사용하고 있으며, 힙 크기는 단편화를 고려하여 승수로 조정됩니다. 하지만 심각한 단편화는 힙 크기가 예상 크기의 두 배이더라도 메모리 할당 실패와 데드락으로 이어질 수 있습니다. 이 글에서는 승수 증가, 힙 구성 변경, Nofl 컬렉터를 위한 빈 블록 예약 등 몇 가지 해결책을 모색합니다. 목표는 단편화를 효율적으로 처리하고 데드락을 방지하는 것입니다.

더 보기
개발

처음부터 만드는 가비지 컬렉터: 20년간의 여정

2025-05-12

20년간의 프로그래밍 경험을 가진 프로그래머가 Immix 가비지 컬렉션 알고리즘을 연구한 후 Guile Scheme을 위한 새로운 가비지 컬렉터를 구현하기로 결정했습니다. 초기 목표는 범용 메모리 관리 인터페이스를 만드는 것이었지만, 결국 mark-sweep 컬렉터의 사이드 테이블을 bump-pointer 할당에 사용하는 Nofl이라는 새로운 가비지 컬렉터를 개발했습니다. 또한 저자는 자신의 연구 결과를 학술 회의에 제출한 경험과 학술 연구 및 산업에 대한 고찰을 공유합니다.

더 보기
개발

세대별 가비지 컬렉션의 당혹스러운 성능

2025-02-09

저자는 세대별 가비지 컬렉션의 성능 이점을 검증하기 위해 실험을 수행했습니다. 놀랍게도 결과는 다양한 벤치마크에서 세대별 가비지 컬렉션이 전체 힙 가비지 컬렉션보다 더 오래 걸렸음을 보여주었습니다. 이 글에서는 쓰기 배리어 오버헤드, 너서리 크기 선택, 벤치마크의 대표성, 컬렉션 빈도 등 몇 가지 가능한 원인을 탐구합니다. 저자는 근본 원인을 파악하려면 추가 조사가 필요하다는 결론을 내립니다.

더 보기
개발