L'allocatore predefinito può talvolta non rilasciare tempestivamente la memoria. Si consiglia di utilizzare jemallocator.
jemallocator è una libreria che si collega all'allocatore di memoria jemalloc, fornendo il tipo Jemalloc
che implementa l'API dell'allocatore e può essere impostato come #[global_allocator]
.
tikv-jemallocator
è il successore del progetto jemallocator
. Queste due crate sono identiche, a parte il nome. Per i nuovi progetti, si raccomanda di utilizzare la versione tikv-xxx
.
L'ecosistema di supporto per jemalloc è composto dalle seguenti crate:
Jemalloc
che implementa i trait GlobalAlloc
e Alloc
.mallctl*()
e MALLCTL NAMESPACE
).Per utilizzare tikv-jemallocator, aggiungilo come dipendenza:
Per impostare tikv_jemallocator::Jemalloc
come allocatore globale, aggiungi il seguente codice al tuo progetto:
Ecco fatto! Una volta definita questa variabile statica, jemalloc verrà utilizzato per tutte le allocazioni di memoria richieste dal codice Rust nello stesso programma.
jemalloc è un'implementazione generica di malloc che si concentra su:
È particolarmente utile in scenari come:
jemalloc non supporta l'ambiente target MSVC, quindi non è disponibile quando si utilizza la toolchain MSVC su Windows. Questo è il motivo per cui nel codice di esempio è inclusa la condizione cfg(not(target_env = "msvc"))
.