Стандартный аллокатор иногда может не освобождать память своевременно, поэтому рекомендуется использовать jemallocator
jemallocator — это библиотека, которая связывается с аллокатором памяти jemalloc и предоставляет тип Jemalloc
, реализующий API аллокатора. Этот тип можно установить в качестве #[global_allocator]
.
tikv-jemallocator
является преемником jemallocator
. Эти крейты идентичны за исключением названия. Для новых проектов рекомендуется использовать версию с префиксом tikv-
.
Экосистема jemalloc включает следующие крейты:
Jemalloc
, реализующий трейты GlobalAlloc
и Alloc
.mallctl*()
и пространство имён MALLCTL
).Чтобы использовать tikv-jemallocator, добавьте его в зависимости:
Чтобы установить tikv_jemallocator::Jemalloc
в качестве глобального аллокатора, добавьте следующий код в ваш проект:
Всё! После определения этой статической переменной jemalloc будет использоваться для всех выделений памяти, запрошенных кодом Rust в этой программе.
jemalloc — это реализация malloc общего назначения, которая фокусируется на:
Особенно полезен в следующих случаях:
jemalloc не поддерживает среду MSVC, поэтому недоступен при использовании инструментария MSVC в Windows. Именно поэтому в примерах кода используется условие cfg(not(target_env = "msvc"))
.