Microsoft abriu unha biblioteca baixo a licenza MIT
A característica fundamental de mimalloc é a súa implementación compacta (menos de 3500 liñas de código) e un rendemento moi elevado. EN
Para avaliar o rendemento, un conxunto de existentes
O alto rendemento conséguese principalmente mediante o uso de fragmentos de listas gratuítos. En lugar dunha lista grande, mimalloc usa unha serie de listas máis pequenas, cada unha das cales está ligada a unha páxina de memoria. Este enfoque reduce a fragmentación e aumenta a localización dos datos na memoria. Unha páxina de memoria é un conxunto agrupado de bloques de tamaño similar. Nos sistemas de 64 bits, o tamaño da páxina adoita ser de 64 KB. Se non quedan bloques ocupados na páxina, esta liberarase completamente e a memoria devólvese ao sistema operativo, o que reduce os custos de memoria e a fragmentación en programas de longa duración.
A biblioteca pódese incluír na fase de ligazón ou cargarse para un programa xa montado ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). A biblioteca tamén ofrece
É posible construír a biblioteca nun modo seguro, no que se substitúen páxinas especiais de verificación de memoria (páxinas de garda) nos límites dos bloques e utilízase a distribución aleatoria de bloques e o cifrado de listas de bloques liberados. Estas medidas permítenche bloquear as técnicas máis típicas para explotar os desbordamentos de búfer baseados no montón. Cando activas o modo seguro, o rendemento diminúe aproximadamente un 3 %.
Entre as características de mimalloc, tamén se sinala que non é susceptible a problemas de inchazo debido á gran fragmentación. No peor dos casos, o consumo de memoria aumenta un 0.2% para os metadatos e pode chegar ao 16.7% para a memoria distribuída. Para evitar conflitos ao acceder aos recursos, mimalloc só utiliza operacións atómicas.
Fonte: opennet.ru