A Microsoft abriu uma biblioteca sob a licença do MIT
A principal característica do mimalloc é sua implementação compacta (menos de 3500 linhas de código) e desempenho muito alto. EM
Para avaliar o desempenho, um conjunto de
O alto desempenho é alcançado principalmente através do uso de fragmentação de lista gratuita. Em vez de uma lista grande, mimalloc usa uma série de listas menores, cada uma delas vinculada a uma página de memória. Essa abordagem reduz a fragmentação e aumenta a localidade dos dados na memória. Uma página de memória é um conjunto agrupado de blocos de tamanho semelhante. Em sistemas de 64 bits, o tamanho da página normalmente é de 64 KB. Se não houver mais blocos ocupados na página, ela será totalmente liberada e a memória será devolvida ao sistema operacional, o que reduz os custos de memória e a fragmentação em programas de longa execução.
A biblioteca pode ser incluída na fase de vinculação ou carregada para um programa já montado (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). A biblioteca também oferece
É possível construir a biblioteca em modo seguro, no qual páginas especiais de verificação de memória (páginas de proteção) são substituídas nos limites do bloco, e são utilizadas randomização da distribuição de blocos e criptografia de listas de blocos liberados. Essas medidas permitem bloquear as técnicas mais típicas de exploração de buffer overflows baseados em heap. Ao ativar o Modo de segurança, o desempenho diminui aproximadamente 3%.
Dentre as características do mimalloc, destaca-se também que ele não é suscetível a problemas de inchaço devido à grande fragmentação. Na pior das hipóteses, o consumo de memória aumenta 0.2% para metadados e pode chegar a 16.7% para memória distribuída. Para evitar conflitos ao acessar recursos, o mimalloc utiliza apenas operações atômicas.
Fonte: opennet.ru