A biblioteca de gerenciamento de memória jemalloc 5.3.1 está disponível

Após 4 anos desde a publicação da última atualização, está disponível o lançamento da biblioteca de gerenciamento de memória jemalloc 5.3.1, 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 bloqueio em sistemas multicore, o jemalloc utiliza uma área de alocação de memória isolada para cada núcleo da CPU, permitindo alcançar escalabilidade linear com o aumento do número de threads.

Em junho de 2025, o autor do projeto interrompeu o suporte e transferiu o repositório do jemalloc para o modo de arquivamento, mas um mês atrás, o desenvolvimento foi retomado pela empresa Meta, que utiliza o jemalloc em sua infraestrutura. 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:

  • Uma função pvalloc foi implementada, que pode ser útil na substituição do alocador de memória libc.
  • As versões de depuração agora incluem um modo de detecção de chamadas duplas da função free(). Para ajustar o tamanho da pilha, dentro do qual será realizada a varredura, foi adicionado o parâmetro debug_double_free_max_scan.
  • Uma opção de compilação «—enable-pageid» foi adicionada para definir tags durante o mapeamento de memória, usando prctl com a flag PR_SET_VMA. Após a ativação, o mapeamento pode ser monitorado através de /proc//maps.
  • Foi adicionado o parâmetro «prof_bt_max», que permite definir a profundidade máxima da pilha para o perfil.
  • Uma opção de compilação «—enable-force-getenv» foi adicionada para usar a função normal getenv() em vez da protegida secure_getenv().
  • Uma opção de compilação «—disable-dss» foi implementada para desativar o uso da função sbrk().
  • Foi introduzido o parâmetro «tcache_ncached_max» para limitar o número de elementos no cache de threads.
  • Foi adicionado o parâmetro «calloc_madvise_threshold» para ajustar o uso do mecanismo do núcleo madvise ou da função memset para zerar a memória alocada pela função calloc.
  • Uma opção de compilação «—disable-user-config» foi adicionada para desativar o carregamento de configurações a partir do arquivo /etc/malloc.conf ou da variável de ambiente MALLOC_CONF.
  • Foi introduzido o parâmetro «process_madvise_max_batch» para limitar o número de blocos de memória para cada operação em lote madvise.
  • Adicionado o parâmetro "disable_large_size_classes" para desativar o novo algoritmo de cálculo do tamanho da memória alocada, que reduz a sobrecarga ao alocar blocos maiores que 4 páginas de memória.
  • Adicionadas opções à utilidade mallctl: opt.prof_bt_max, arena.<i>.name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage e approximate_stats.active.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster