Microsoft heeft een bibliotheek geopend onder de MIT-licentie
Het belangrijkste kenmerk van mimalloc is de compacte implementatie (minder dan 3500 regels code) en zeer hoge prestaties. IN
Om de prestaties te evalueren, is een reeks bestaande
Hoge prestaties worden voornamelijk bereikt door het gebruik van gratis lijst-sharding. In plaats van één grote lijst gebruikt mimalloc een reeks kleinere lijsten, die elk aan een geheugenpagina zijn gebonden. Deze aanpak vermindert fragmentatie en vergroot de gegevenslocatie in het geheugen. Een geheugenpagina is een gegroepeerde set blokken van vergelijkbare grootte. Op 64-bits systemen is de paginagrootte doorgaans 64 KB. Als er geen bezette blokken meer op de pagina staan, wordt deze volledig vrijgegeven en wordt het geheugen teruggestuurd naar het besturingssysteem, wat de geheugenkosten en fragmentatie in langlopende programma's vermindert.
De bibliotheek kan worden opgenomen in de koppelingsfase of worden geladen voor een reeds samengesteld programma (“LD_PRELOAD=/usr/bin/libmimalloc.so mijnprogramma”). De bibliotheek biedt ook
Het is mogelijk om de bibliotheek in een veilige modus te bouwen, waarin speciale geheugencontrolepagina's (bewakingspagina's) worden vervangen bij de blokgrenzen, en er gebruik wordt gemaakt van randomisatie van de blokverdeling en encryptie van lijsten met vrijgegeven blokken. Dergelijke maatregelen maken het mogelijk de meest gebruikelijke technieken voor het exploiteren van op heap gebaseerde bufferoverflows te blokkeren. Wanneer u de Veilige modus inschakelt, nemen de prestaties met ongeveer 3% af.
Onder de kenmerken van mimalloc wordt ook opgemerkt dat het niet vatbaar is voor problemen met een opgeblazen gevoel als gevolg van grote fragmentatie. In het ergste geval stijgt het geheugengebruik met 0.2% voor metadata en kan het oplopen tot 16.7% voor gedistribueerd geheugen. Om conflicten te voorkomen bij de toegang tot bronnen, gebruikt mimalloc alleen atomaire bewerkingen.
Bron: opennet.ru