Microsoftは6月20日(米国時間)、「GitHub - microsoft/mimalloc: mimalloc is a compact general purpose allocator with excellent performance.」において、「mimalloc」と呼ばれるメモリアロケータを公開した。mimallocはjemallocやtcmallocといったメモリアロケータと互換性があり入れ替えることが可能なほか、パフォーマンスとメモリ使用量において既存の実装よりも優れた性能を実現しているという。Windowsに加えて、MacOSX、Linux、*BSDでも利用できる。
mimallocの主な特徴として、以下が紹介されている。
- 高速動作。jemallocやtcmalloc、Hoardなど主要なメモリアロケータよりも優れた性能を持っている。また、メモリ使用量も少なく、広範囲のベンチマークにおいてうまく機能している。
- ライブラリは3500行未満と少なく、一貫性がある。ほかのプロジェクトに統合することが容易。
- フラグメンテーションの減少と局所性の構造。大きな空きリストを保持するのではなく、メモリページごとに小さなリストをたくさん保持する構造を採用している。
- 積極的なメモリリセット。ページが空になるとOSから見て未使用の状態としてマークされるようになり、メモリプレッシャの削減とフラグメンテーションの減少につながるように処理。特に長期に渡って動作し続けるプログラムに有効
- 保護ページ、ランダム割当、暗号化空きリストといったセキュアモードを組み込み可能。セキュアモードにおけるパフォーマンス減少は平均で3%ほど。
- 異なるリージョンに対して複数のヒープを効率的に作成。作成したヒープは一気に破棄可能。
公開されているベンチマークによると、mimallocは他の高性能メモリアロケータと比較して同等ないしはより優れた性能を持っているようだ。mimallocがどの程度普及することになるか、今度の動向が注目される。
mimallocはもともとKokaおよびLean言語のランタイムシステム用にDaan Leijen氏によって開発されたメモリアロケータ。MITライセンスのもとで提供されている。