jemalloc 5.3.1

После почти четырёхлетней паузы (см. «jemalloc всё») состоялся выпуск 5.3.1 аллокатора jemalloc — реализации malloc (3), в которой особое внимание уделяется предотвращению фрагментации и поддержке масштабируемой параллельности.
Новый выпуск включает в себя более 390 коммитов с исправлением ошибок, новыми функциями, оптимизацией производительности и улучшением переносимости.
Проект написан на языке С и распространяется по лицензии BSD.
Новые возможности:
- поддержка pvalloc (3).
- обнаружение двойного освобождения памяти в отладочной сборке;
- добавлена опция компиляции
--enable-pageidдля включения аннотации отображаемой памяти. - добавлен runtime-параметр
prof_bt_maxуправления максимальной глубиной стека для профилирования; - добавлена опция компиляции
--enable-force-getenvдля использованияgetenvвместоsecure_getenv; - добавлена опция компиляции
--disable-dssдля отключения использованияsbrk(2); - добавлена опция компиляции
tcache_ncached_maxдля управления количеством элементов в кеше потоков. - добавлен runtime-параметр
calloc_madvise_thresholdдля определения, используется ли ядро илиmemsetдля обнуления выделенных блоков памяти при вызовеcalloc; - добавлена опция компиляции
--disable-user-configдля отключения чтения во время выполнения конфигураций из файла/etc/malloc.confили из переменной средыMALLOC_CONF; - добавлен runtime-параметр
disable_large_size_classesдля обеспечения работы нового алгоритма расчёта доступного размера, который минимизирует накладные расходы на память при выделении больших блоков памяти, то есть с размером>= 4 * PAGE; - включено использование
process_madviseи добавлен runtime-параметрprocess_madvise_max_batchдля управления максимальным количеством регионов памяти в каждой «пачке»madvise; - добавлены интерфейсы
mallctl:opt.prof_bt_max;arena..nameдля изменения и получения имён «арены»;thread.tcache.maxдля изменения и полученияtcache_maxтекущего потока;thread.tcache.ncached_max.writeиthread.tcache.ncached_max.read_sizeclassдля изменения и полученияncached_maxтекущего потока;arenas.hugepageдля возвращения используемого размераhugepage, также экспортирумего в статистикуmalloc;approximate_stats.activeдля получения приблизительного значения текущего объема активных байтов, которое не следует сравнивать с другими полученными статистическими данными.
- также исправлены многие ошибки и улучшена документация.
>>> Подробности на GitHub
