預設分配器有時會出現無法及時釋放記憶體的情況,推薦使用jemallocator
jemallocator 是一個與 jemalloc 記憶體分配器連結的函式庫,提供了 Jemalloc
單元型別,該型別實作了分配器 API 並可設定為 #[global_allocator]
。
tikv-jemallocator
是 jemallocator
的後繼專案。這兩個 crate 除了名稱不同外完全相同。對於新專案,建議使用 tikv-xxx
版本。
jemalloc 支援生態系統由以下 crate 組成:
GlobalAlloc
和 Alloc
trait 的 Jemalloc
型別。mallctl*()
函式家族與 MALLCTL NAMESPACE
)。要使用 tikv-jemallocator,將它添加為依賴:
要將 tikv_jemallocator::Jemalloc
設定為全域分配器,將以下程式碼添加到您的專案中:
就是這樣!一旦定義了這個靜態變數,jemalloc 將用於同一程式中 Rust 程式碼請求的所有記憶體分配。
jemalloc 是一個通用目的的 malloc 實作,專注於:
在以下場景中特別有用:
jemalloc 不支援 MSVC 目標環境,因此在 Windows 上使用 MSVC 工具鏈時不可用。這就是為什麼在範例程式碼中包含 cfg(not(target_env = "msvc"))
條件的原因。