時隔近四年(見“jemalloc 一切») 分配器 5.3.1 版本已發布 傑馬洛克 – malloc(3) 的實現,強調防止碎片化和支援可擴展的同時發生。
新版本包含超過 390 次提交,修復了錯誤,添加了新功能,優化了效能,並改進了可移植性。
該專案使用 C 語言編寫,並以 BSD 許可證發布。
新的機會:
- 支持 pvalloc(3)。
- 在調試版本中檢測到重複釋放;
- 新增了 --enable-pageid 編譯選項以啟用記憶體映射註解。
- 新增了運行時參數 prof_bt_max,用於控制效能分析的最大堆疊深度;
- 新增了編譯選項 --enable-force-getenv,以使用 getenv 而不是 secure_getenv;
- 新增了 --disable-dss 編譯選項,以停用 sbrk(2) 的使用;
- 新增了編譯選項 tcache_ncached_max,用於控制執行緒快取中的項目數。
- 新增運行時參數 calloc_madvise_threshold,以確定在呼叫 calloc 時是使用核心還是 memset 將已分配的記憶體區塊清除;
- 新增了 --disable-user-config 編譯時選項,用於在執行時間停用從 /etc/malloc.conf 檔案或 MALLOC_CONF 環境變數讀取配置。
- 新增了運行時參數 disable_large_size_classes,以啟用新的可用大小計算演算法,該演算法可最大限度地減少分配大記憶體區塊(即大小 >= 4 * PAGE)時的記憶體開銷;
- 啟用了 process_madvise 的使用,並添加了運行時參數 process_madvise_max_batch 來控制每個 madvise「批次」中的最大記憶體區域數;
- mallctl 介面已新增:
- opt.prof_bt_max;
- 競技場。 .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 取得目前活動位元組數的近似值,該值不應與其他檢索到的統計資訊進行比較。
- 許多漏洞也得到了修復,文件也得到了改進。
來源: linux.org.ru
