世界を動かす技術を、日本語で。

Jemalloc 5.4.0

2026年9月18日原文(github.com)

概要

  • 160以上のコミット による大規模な技術的負債の解消
  • 新機能追加既存機能の最適化
  • 移植性の向上バグ修正
  • 互換性のない変更点 を含むリリース
  • 統計情報とAPI拡張 による利用状況の可視化

技術的負債解消と最適化

  • リファクタリング、バグ修正、テストカバレッジ向上、オプション整理の実施
  • jemallocフロントエンドの モジュール化、アリーナ管理・初期化・fork処理・割当て分離
  • tcache/arenaの所有権整理、内部ヘッダーの循環依存排除
  • arenaヘルパーのリファクタリング、制御フローマクロの型付きヘルパー化、ctl.cのサブシステム別整理
  • 統計収集・描画処理を 分離 し、記述子駆動型テーブルで整理
  • OS抽象化レイヤ 導入、プラットフォーム依存のI/O・同期・エラー処理等をコアから分離

新機能

  • EXTENT_ALLOC_FLAG_PINNED 追加:HugeTLBページなどの再利用優先マッピングをカスタムフックで指定可能
  • mallctl APIに stats.pinnedstats.arenas.<i>.pinned 等を追加し、ピン留めメモリ使用量・mutex統計を可視化
  • thread.arenaで per-CPUアリーナ選択の再開 を許可
  • malloc統計の 人間可読形式とJSON出力の整合性向上
  • 実行時experimental_infallible_newオプションを廃止し、 ビルド時--enable-cxx-infallible-new へ移行

互換性のない変更

  • tcacheのfill/retentionターゲット をGCイベント間の需要観測ベースに変更し、固定リフィル/フラッシュ方針を廃止
  • 7つのレガシーコントロール を削除: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
    • malloc_conf設定は無視、opt.* mallctlはENOENT返却、tcache_ncached_maxのみサポート継続

バグ修正

  • free, free_sized, free_aligned_sized、process_madviseベースのページパージで errno保存
  • サイズクラスの 数値オーバーフロー検査修正
  • free_sized(), free_aligned_sized()で NULL受理 (C23準拠)
  • TSDライフサイクルのエッジケース修正:スレッドキャッシュbinの初期化順序見直し、スレッド解体後の不要なTSD再作成回避
  • init_thp_stateで O_CLOEXEC使用、THP sysfsファイルの安全なオープン
  • malloc_stats_print出力の 重複フィールド修正
  • arena_reset時の デッドロック防止
  • SANでの プロファイルサンプリング/ガードページバグ修正

最適化・リファクタ

  • base-block成長ヒューリスティックの上限設定、VM枯渇防止
  • バックグラウンドスレッドのライフサイクル・状態管理を専用モジュールへ分離
  • ページ割当て境界の単純化、PAI抽象化の廃止、arena外への遅延処理・decayオーケストレーション移動

移植性向上

  • std::__throw_bad_alloc呼び出しを 標準C++ に置換
  • arena_sで C99以降の柔軟配列メンバー (bin_t all_bins[])を使用
  • --with-lg-vaddrオプション時の rdtscp検出修正
  • macOSでmalloc_getcpuが 正しいCPU番号取得 を実現
  • バックグラウンドスレッドsleepに CLOCK_MONOTONIC使用、monotonic-condvarサポートをconfigure時に検出
  • macOSでの コンパイル警告修正
  • MinGWビルドでの スレッド終了時TSDクリーンアップ修正
  • GCC 16ビルド警告対応:-Wpedantic違反の排除、profilingスレッド名コピーの明示的NUL終端
  • PID-namespace symlink解析 をglibc非依存化、uint64_tでID返却

Hackerたちの意見

なんでこれがHNのフロントページに載ってるの?このリリースに特に注目すべき点があるの?

最近、jemallocの開発が再開されたんだって。何年もリリースがなかったのにね。

ジェイソン・エバンスがメンテナーを辞めた後の初リリースか確認したけど、違った。前のリリース、5.3.1だったよ。

開発再開のニュースと、2、3日前のMalloc()アルゴリズム比較スレッドからのちょっとした影響があるんじゃないかな。 - https://news.ycombinator.com/item?id=49715318

ソフトウェアを仕事にしてるなら、jemallocは知っておくべきだよ。

jemallocを使ってるから、これに投票したよ(RoRでね)。AIがHNのフロントページを占拠するのにはうんざりしてる。ハッカー精神を取り戻そう!

あなたみたいな人が文句ばっか言ってるから、もっと面白いことを作る余裕がないんだよ。

なんでこれがHNのフロントページにあるの?この質問は必要なかったよ。答えは分かってるでしょ、だってみんながアップボートしたから。

このリリースが注目される理由についての背景情報:Jemallocのポストモーテム [0] [0] https://news.ycombinator.com/item?id=44264958

ドラマにこだわりたくはないけど、Facebook/Metaの手に渡ったjemallocが悲しい結末を迎えたことは言及する価値があるかもね。関わった人たちは善意で行動してたけど、これは唯一のケースじゃないし。兆ドル企業が突然オープンソースプロジェクトに興味を持つのは、必ずしも長期的な利益にはならないよ。

そして数ヶ月前の追加のコンテキスト、ポストモーテムを踏まえて。 https://theconsensus.dev/p/2026/04/16/who-even-uses-jemalloc...

ずっと気になってたんだけど、これフランス語なの?「Je m'alloc du memory」って。

Hacker Newsで議論の続きを見る