O alocador padrão pode, às vezes, não liberar memória de forma oportuna. Recomenda-se o uso do jemallocator.
O jemallocator é uma biblioteca que vincula o alocador de memória jemalloc, fornecendo o tipo de unidade Jemalloc
, que implementa a API do alocador e pode ser definido como #[global_allocator]
.
O tikv-jemallocator
é o sucessor do projeto jemallocator
. Ambos os crates são idênticos, exceto pelo nome. Para novos projetos, recomenda-se a versão tikv-xxx
.
O ecossistema de suporte ao jemalloc consiste nos seguintes crates:
Jemalloc
, que implementa os traits GlobalAlloc
e Alloc
.mallctl*()
e MALLCTL NAMESPACE
).Para usar o tikv-jemallocator, adicione-o como dependência:
Para definir tikv_jemallocator::Jemalloc
como o alocador global, adicione o seguinte código ao seu projeto:
Pronto! Uma vez definida essa variável estática, o jemalloc será usado para todas as alocações de memória solicitadas pelo código Rust no mesmo programa.
O jemalloc é uma implementação de malloc de propósito geral, focada em:
É particularmente útil em:
O jemalloc não suporta ambientes de destino MSVC, portanto, não está disponível ao usar a cadeia de ferramentas MSVC no Windows. É por isso que o código de exemplo inclui a condição cfg(not(target_env = "msvc"))
.