Kompania Microsoft hap codin e bibliotekës nën licencën MIT me implementimin e sistemit të shpërndarjes së memories, e krijuar fillimisht për komponentët runtime të gjuhëve dhe . Mimalloc është i përshtatshëm për t'u përdorur në aplikacione standarde pa ndryshime në kodin e tyre dhe mund të veprojë si një zëvendësim transparent i funksionit malloc. Mbështetet në Windows, macOS, Linux, BSD dhe sisteme të tjera si Unix.
Veçoria kyçe e mimalloc është kompaktësia e implementimit (më pak se 3500 rreshta kod) dhe performanca shumë e lartë. Në mimalloc ka tejkaluar performancën e të gjitha bibliotekave konkurruese për shpërndarjen e memories, duke përfshirë , , , dhe .
Për vlerësimin e performancës është përdorur një grup testesh standarde tashmë ekzistuese Performanca e lartë arrihet kryesisht përmes aplikimit të segmentimit të listës së blloqeve të lirë (free list sharding). Në vend të një liste të madhe, mimalloc përdor ndarjen në një seri listash më të vogla, secila prej të cilave lidhet me një faqe memories. Ky qasje zvogëlon fragmentimin dhe rrit lokalizimin e të dhënave në memorie. Faqja e memories kuptohet si një grup i blloqeve që janë të ngjashme në madhësi. Në sistemet 64-bit, madhësia e faqes zakonisht është 64 KB. Në rast se në faqe nuk mbeten blloqe të zëna, ajo lirohet plotësisht duke kthyer memorien te sistemi operativ, çka ndihmon në uljen e shpenzimeve të memories dhe fragmentimin në programe që punojnë për një kohë të gjatë.

Bibliotekën mund ta lidhni në fazën e lidhjes ose ta ngarkoni për një program tashmë të ndërtuar ("LD_PRELOAD=\/usr\/bin\/libmimalloc.so myprogram"). Në bibliotekë gjithashtu ofrohet
Biblioteka mund të lidhet gjatë fazës së lidhjes ose të ngarkohet për një program të prekur tashmë ("LD_PRELOAD=\usr\bin\libmimalloc.so myprogram"). Biblioteka gjithashtu ofron për integrimin e funksionalitetit në runtime dhe menaxhimin e hollësishëm të sjelljes, për shembull, për lidhjen e trajtuesve të çlirimit të vonuar të memories dhe rritjes monotone të numrave të referenceve. Ekziston mundësia e krijimit dhe përdorimit në aplikacion të disa 'kupave' (heap) për shpërndarjen në zona të ndryshme të memories. Po ashtu është e mundur çlirimi i kupës në tërësi, pa përshkrim dhe çlirimin e veçantë të objekteve që ndodhen në të.
ĂshtĂ« parashikuar mundĂ«sia e ndĂ«rtimit tĂ« bibliotekĂ«s nĂ« modalitetin e sigurt, nĂ« tĂ« cilin nĂ« kufijtĂ« e blloqeve bĂ«het zĂ«vendĂ«simi i faqeve speciale mbrojtĂ«se tĂ« memories (guard-page), si dhe pĂ«rdoret randomizimi i shpĂ«rndarjes sĂ« blloqeve dhe enkriptimi i listave tĂ« blloqeve tĂ« çliruara. Masa tĂ« tilla lejojnĂ« bllokimin e shumicĂ«s sĂ« teknikave tipike tĂ« shfrytĂ«zimit tĂ« mbushjes sĂ« tamponit nĂ« heap. NĂ«se aktivizohet modaliteti i sigurt, performanca bie me rreth 3%.
Nga veçoritë e mimalloc, theksohet gjithashtu se nuk është e ndjeshme ndaj problemeve të fryrjes në fragmentimin e madh. Në skenarin më të keq, konsumimi i memories rritet me 0.2% për metadata dhe mund të arrijë deri në 16.7% për memorien e shpërndarë. Për të shmangur konfliktet gjatë qasjes në burime, mimalloc përdor vetëm operacione atomike.
Burimi: opennet.ru
