Foi lançado o release da biblioteca de gerenciamento de memória jemalloc 5.4.0, que oferece uma implementação alternativa das funções malloc, otimizada para reduzir a fragmentação e operar em sistemas multiprocessados. Para resolver problemas de bloqueios em sistemas multinúcleos, o jemalloc utiliza uma área isolada de alocação de memória para cada núcleo da CPU, permitindo uma escalabilidade linear à medida que o número de threads aumenta.
Em junho de 2025, o autor do projeto interrompeu o suporte e arquivou o repositório jemalloc, mas em março deste ano, a empresa Meta, que utiliza o jemalloc em sua infraestrutura, retomou o desenvolvimento. Originalmente, a biblioteca foi desenvolvida para o FreeBSD e é usada como padrão nesse sistema operacional desde 2005. O código da biblioteca é escrito em C e é distribuído sob a licença BSD.
Entre as alterações:
- A lógica de preenchimento e redefinição do tcache (Thread Local Cache) foi simplificada, assim como a gestão da alocação de memória.
- Os alocadores de páginas de memória PAC (Page Allocator Classic) e HPA (Huge Page Allocator) foram unificados. O complexo mecanismo de chamadas indiretas através da vtable (PAI vtable) foi removido.
- Para facilitar a manutenção e a expansão das plataformas, todas as operações dependentes da plataforma foram movidas para arquivos de cabeçalho separados.
- A despachante de comandos mallctl foi simplificada, assim como a infraestrutura de geração e exibição de estatísticas.
- Adicionado o flag EXTENT_ALLOC_FLAG_PINNED, que permite marcar áreas de mapeamento de memória não desalocáveis, como páginas HugeTLB, para reutilização prioritária. Novas interfaces mallctl foram adicionadas para obter estatísticas de uso de memória fixa: stats.pinned, stats.arenas.<i>.pinned, stats.arenas.<i>.extents.<j>.npinned, stats.arenas.<i>.extents..pinned_bytes e stats.arenas.<i>.mutexes.extents_pinned.{counter}.
- O conteúdo das estatísticas malloc foi sincronizado em formatos legíveis e JSON.
- Os parâmetros obsoletos lg_tcache_nslots_mul, tcache_nslots_small_min, tcache_nslots_small_max, tcache_nslots_large, tcache_gc_delay_bytes, lg_tcache_flush_small_div e lg_tcache_flush_large_div foram removidos.
Fonte: opennet.ru
