El asignador predeterminado a veces no libera memoria oportunamente. Se recomienda usar jemallocator.
jemallocator es una biblioteca que enlaza con el asignador de memoria jemalloc, proporcionando el tipo Jemalloc
que implementa la API de asignación y puede configurarse como #[global_allocator]
.
tikv-jemallocator
es el sucesor de jemallocator
. Ambos crates son idénticos excepto por el nombre. Para nuevos proyectos, se recomienda usar la versión tikv-xxx
.
El ecosistema de soporte para jemalloc consta de los siguientes crates:
Jemalloc
que implementa los traits GlobalAlloc
y Alloc
.mallctl*()
y MALLCTL NAMESPACE
).Para usar tikv-jemallocator, añádelo como dependencia:
Para establecer tikv_jemallocator::Jemalloc
como asignador global, añade este código a tu proyecto:
¡Eso es todo! Una vez definida esta variable estática, jemalloc se usará para todas las asignaciones de memoria solicitadas por el código Rust en el mismo programa.
jemalloc es una implementación de propósito general de malloc que se enfoca en:
Es especialmente útil en:
jemalloc no es compatible con entornos objetivo MSVC, por lo que no está disponible al usar la cadena de herramientas MSVC en Windows. Por eso el código de ejemplo incluye la condición cfg(not(target_env = "msvc"))
.