L'allocateur par défaut peut parfois ne pas libérer la mémoire de manière opportune. Nous recommandons d'utiliser jemallocator.
jemallocator est une bibliothèque liée à l'allocateur mémoire jemalloc. Il fournit le type unitaire Jemalloc
, qui implémente l'API d'allocateur et peut être défini comme #[global_allocator]
.
tikv-jemallocator
est le successeur du projet jemallocator
. Ces deux crates sont identiques à l'exception de leur nom. Pour les nouveaux projets, il est recommandé d'utiliser la version tikv-xxx
.
L'écosystème de support jemalloc est composé des crates suivantes :
Jemalloc
implémentant les traits GlobalAlloc
et Alloc
.mallctl*()
et MALLCTL NAMESPACE
).Pour utiliser tikv-jemallocator, ajoutez-le comme dépendance :
Pour définir tikv_jemallocator::Jemalloc
comme allocateur global, ajoutez le code suivant à votre projet :
Et voilà ! Une fois cette variable statique définie, jemalloc sera utilisé pour toutes les allocations mémoire demandées par le code Rust dans le même programme.
jemalloc est une implémentation malloc à usage général qui se concentre sur :
Il est particulièrement utile dans les cas suivants :
jemalloc ne prend pas en charge les environnements cibles MSVC, il n'est donc pas disponible sous Windows avec la chaîne d'outils MSVC. C'est pourquoi les exemples de code incluent la condition cfg(not(target_env = "msvc"))
.