Der Standardzuweiser gibt manchmal Speicher nicht rechtzeitig frei. Die Verwendung von jemallocator wird empfohlen.
jemallocator ist eine Bibliothek, die mit dem jemalloc-Speicherzuweiser verknüpft ist. Sie stellt den Jemalloc
-Typ bereit, der die Allokator-API implementiert und als #[global_allocator]
festgelegt werden kann.
tikv-jemallocator
ist das Nachfolgeprojekt von jemallocator
. Abgesehen vom Namen sind beide Crates identisch. Für neue Projekte wird die tikv-xxx
-Version empfohlen.
Das jemalloc-Ökosystem besteht aus folgenden Crates:
Jemalloc
-Typ bereit, der die GlobalAlloc
- und Alloc
-Traits implementiert.mallctl*()
-Funktionsfamilie und der MALLCTL NAMESPACE
).Um tikv-jemallocator zu verwenden, fügen Sie es als Abhängigkeit hinzu:
Um tikv_jemallocator::Jemalloc
als globalen Allokator festzulegen, fügen Sie folgenden Code zu Ihrem Projekt hinzu:
Das war's! Sobald diese statische Variable definiert ist, wird jemalloc für alle Speicherzuweisungen verwendet, die vom Rust-Code im selben Programm angefordert werden.
jemalloc ist eine allgemeine malloc-Implementierung mit Fokus auf:
Besonders nützlich ist es in folgenden Fällen:
jemalloc unterstützt die MSVC-Zielumgebung nicht und ist daher unter Windows mit dem MSVC-Toolchain nicht verfügbar. Deshalb wird in den Beispielen die Bedingung cfg(not(target_env = "msvc"))
verwendet.