할당한 스레드와 해제하는 스레드
같은 스레드가 할당하고 해제하는 경우 동기화 작업을 피하는 경로를 사용한다. 다른 스레드에서 해제하면 잠금 대신 메시지 전달 체계로 원래 할당기에 공간을 반환한다. 이 차이를 명시적으로 다루는 것이 핵심 설계다.
해제를 모아 전달하는 구조
여러 원격 해제를 묶어 원자적 작업의 비용을 나눌 수 있도록 한다. 큰 페이지 범위를 이용해 필요한 메타데이터를 줄이는 설계도 사용한다. 한 스레드가 할당한 객체를 다른 스레드가 대량으로 해제하는 상황을 주요 사용 조건으로 고려한다.
연결 방식과 보호 기능
헤더 기반 C++ 라이브러리로 포함하거나 지원 환경에서 기본 할당기를 대체하는 방식으로 사용할 수 있다. Rust용 연결 구성도 있다. 강화된 구성은 할당 위치 무작위화와 메타데이터 분리 및 손상 탐지와 가드 페이지 등의 보호 기능을 제공한다.
관련 문서
mimalloc / jemalloc / gperftools / 메모리 관리 / Rust / 프로세스