デフォルトのアロケータでは、時々メモリが即座に解放されない場合があります。jemallocatorの使用を推奨します
jemallocatorはjemallocメモリアロケータとリンクするライブラリで、Jemalloc
ユニット型を提供します。この型はアロケータAPIを実装しており、#[global_allocator]
として設定可能です。
tikv-jemallocator
はjemallocator
の後継プロジェクトです。両クレートは名前以外完全に同一です。新規プロジェクトではtikv-xxx
バージョンの使用を推奨します。
jemallocサポートエコシステムは以下のクレートで構成されます:
GlobalAlloc
とAlloc
トレイトを実装したJemalloc
型を提供mallctl*()
関数群とMALLCTL NAMESPACE
)tikv-jemallocatorを使用するには、依存関係として追加します:
tikv_jemallocator::Jemalloc
をグローバルアロケータとして設定するには、プロジェクトに以下を追加:
これだけです!この静的変数を定義すると、jemallocがそのプログラム内のRustコードによる全てのメモリ割り当てに使用されます。
jemallocは汎用malloc実装で、以下に重点を置いています:
以下のシナリオで特に有用です:
jemallocはMSVCターゲット環境をサポートしていないため、WindowsでMSVCツールチェーンを使用する場合は利用できません。これがサンプルコードにcfg(not(target_env = "msvc"))
条件を含める理由です。