Представлен релиз библиотеки управления памятью jemalloc 5.4.0, предлагающей альтернативную реализацию функций malloc, оптимизированную для снижения фрагментации и работы на многопроцессорных системах. Для решения проблем с блокировками на многоядерных системах в jemalloc для каждого ядра CPU используется своя изолированная область распределения памяти, что позволяет добиться линейной масштабируемости при росте числа потоков.
В июне 2025 года автор проекта прекратил сопровождение и перевёл репозиторий jemalloc в архивный режим, но в марте этого года разработку возобновила компания Meta, применяющая jemalloc в своей инфраструктуре. Изначально библиотека была разработана для FreeBSD и используется в данной ОС по умолчанию с 2005 года. Код библиотеки написан на Си и распространяется под лицензией BSD.
Среди изменений:
- Упрощена логика заполнения и сброса tcache (Thread Local Cache), а также диспетчеризации выделения памяти.
- Унифицированы аллокаторы страниц памяти PAC (Page Allocator Classic) и HPA (Huge Page Allocator). Удалён усложнённый механизм косвенных вызовов через vtable (PAI vtable).
- Для упрощения сопровождения и расширения платформ все платформо-зависимые операции вынесены в отдельные заголовочные файлы.
- Упрощена диспетчеризация команд mallctl, а также переработана инфраструктура генерации и вывода статистики.
- Добавлен флаг EXTENT_ALLOC_FLAG_PINNED, позволяющий помечать невытесняемые области маппинга памяти, такие как страницы HugeTLB, для их приоритетного повторного использования. Для получения статистики об использовании закреплённой памяти добавлены новые интерфейсы mallctl:
stats.pinned, stats.arenas.‹i›.pinned,
stats.arenas.‹i›.extents.‹j›.npinned,
stats.arenas.‹i›.extents..pinned_bytes и
stats.arenas.‹i›.mutexes.extents_pinned.{counter} .- Синхронизировано содержимое статистики malloc в читаемом и JSON форматах.
- Удалены устаревшие параметры lg_tcache_nslots_mul,
tcache_nslots_small_min, tcache_nslots_small_max,
tcache_nslots_large, tcache_gc_delay_bytes,
lg_tcache_flush_small_div и lg_tcache_flush_large_div.
Источник: http://www.opennet.ru/opennews/art.shtml?num=66304
