Microsoft a deschis o bibliotecă sub licența MIT
Caracteristica cheie a mimalloc este implementarea sa compactă (mai puțin de 3500 de linii de cod) și performanța foarte ridicată. ÎN
Pentru a evalua performanța, un set de existente
Performanța ridicată este atinsă în principal prin utilizarea sharding-ului gratuit. În loc de o listă mare, mimalloc folosește o serie de liste mai mici, fiecare dintre acestea fiind legată de o pagină de memorie. Această abordare reduce fragmentarea și crește localitatea datelor în memorie. O pagină de memorie este un set grupat de blocuri de dimensiuni similare. Pe sistemele pe 64 de biți, dimensiunea paginii este de obicei de 64 KB. Dacă în pagină nu au rămas blocuri ocupate, aceasta este complet eliberată, iar memoria este returnată sistemului de operare, ceea ce reduce costurile de memorie și fragmentarea în programele de lungă durată.
Biblioteca poate fi inclusă în etapa de conectare sau încărcată pentru un program deja asamblat (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Biblioteca oferă și
Este posibilă construirea bibliotecii într-un mod sigur, în care paginile speciale de verificare a memoriei (pagini de gardă) sunt înlocuite la granițele blocurilor și se utilizează randomizarea distribuției blocurilor și criptarea listelor de blocuri eliberate. Astfel de măsuri fac posibilă blocarea celor mai comune tehnici de exploatare a depășirilor de buffer bazate pe heap. Când activați modul sigur, performanța scade cu aproximativ 3%.
Printre caracteristicile mimalloc, se remarcă, de asemenea, că nu este susceptibil la probleme de balonare din cauza fragmentării mari. În cel mai rău caz, consumul de memorie crește cu 0.2% pentru metadate și poate ajunge la 16.7% pentru memoria distribuită. Pentru a evita conflictele la accesarea resurselor, mimalloc folosește numai operații atomice.
Sursa: opennet.ru