jemalloc 5.4.0リリース
원제: Jemalloc 5.4.0
왜 중요한가
jemalloc은 Firefox, Redis, Meta 등 광범위한 프로덕션 환경에서 사용되며, HugeTLB 대응 등 고성능 시스템에서의 메모리 관리 효율화에 직결된다.
메모리 할당 라이브러리 jemalloc의 버전 5.4.0이 2025년 9월 17일에 공개됐다. 160건 이상의 커밋을 포함하며、리팩토링・버그 수정・테스트 커버리지 향상・옵션 정리 등 기술 부채 해소를 중심으로 구성된다。새로운 기능과 하위 호환성을 깨는 변경도 포함된다。
jemalloc 5.4.0은 광리-다이(guangli-dai)가 릴리스했다. 160건 이상의 커밋으로 구성되며, 주된 초점은 기술 부채 해소다. 리팩토링, 버그 수정, 테스트 커버리지 개선, 옵션 정리 외에 포터빌리티 향상도 포함된다.
주요 신기능은 네 가지다. 첫째, EXTENT_ALLOC_FLAG_PINNED 플래그 추가로, 커스텀 extent 할당 훅이 HugeTLB 페이지 등 회수 불가 매핑을 '고정(pinned)'으로 표시하고 decay/purge 파이프라인 외부에서 우선 재사용할 수 있게 됐다. 이와 함께 stats.pinned 등 다섯 종류의 mallctl 인터페이스가 추가되어 고정 메모리 사용량과 mutex 통계를 확인할 수 있다.
둘째, thread.arena를 통해 per-CPU 아레나 선택을 재개(resume)할 수 있게 됐다. 셋째, 사람이 읽기 쉬운 형식과 JSON 형식의 malloc 통계 출력 내용이 더욱 일치하도록 개선됐다. 넷째, 런타임 옵션 experimental_infallible_new가 컴파일 타임 옵션 --enable-cxx-infallible-new로 대체됐다. 이를 통해 컴파일러 수준 최적화와 이동 생성자 최적화가 가능해지고, new(std::nothrow)의 계약도 수정됐다.
하위 호환성을 깨는 변경으로는, tcache의 fill 및 retention 대상을 GC 이벤트 간 관찰된 수요에 맞춰 per-bin으로 동적 조정하는 방식으로 전환됐다. 종전의 고정 리필 방식은 폐지된다.