Kompania Microsoft ka hapur nën licencën MIT një bibliotekë me implementime të sistemit të shpërndarjes së memories, e cila u krijua fillimisht për komponentët runtime të gjuhëve dhe . Mimalloc është përshtatur për t'u përdorur në aplikacione tipike pa ndryshuar kodin e tyre dhe mund të shërbejë si një zëvendësim i padukshëm i funksionit malloc. Mbështetet puna në Windows, macOS, Linux, BSD dhe sisteme të tjera të ngjashme me Unix.
Karakteristika kyçe e mimalloc është kompaktësia e implementimit (më pak se 3500 rreshta kode) dhe performanca shumë e lartë. Në mimalloc tejkaloi të gjitha bibliotekat konkurente të shpërndarjes së memories në performancë, duke përfshirë , , , dhe .
Për të vlerësuar performancën, u përdor një grup testesh ekzistuese В некоторых тестах mimalloc опережает другие системы в разы, например, в тесте миграции объектов между разными потоками mimalloc оказался быстрее tcmalloc и jemalloc более чем в 2.5 раза. При этом в большинстве тестов также наблюдается более низкое потребления памяти, в некоторых ситуациях расход памяти удаётся снизить на 25%.

Performanca e lartë arrihet kryesisht përmes përdorimit të segmentimit të listës së blloqeve të lira (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 të memories. Ky qasje zvogëlon fragmentimin dhe rrit lokalizimin e të dhënave në memory. Nga një faqe e memories kuptohet një grup blloqesh të ngjashëm në madhësi. Në sisteme 64-bit, madhësia e faqes zakonisht është 64 KB. Nëse në faqe nuk mbeten blloqe të zëna, ajo lirohet plotësisht duke kthyer memories operativit, çka ndihmon në uljen e kostove të memories dhe fragmentimin në programe me një kohëprolongim të gjatë.
Biblioteka mund të integrohet në fazën e lidhjes ose të ngarkohet për një program të ndërtuar tashmë ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). Në bibliotekë gjithashtu ofrohet për integrimin e funksionalitetit në runtime dhe menaxhimin e ndjeshëm të sjelljes, për shembull, për lidhjen e trajtuesve të lirimit të memories së vonuar dhe rritjen monotone të numrave të referencës. Ka mundësinë për të krijuar dhe përdorur në aplikacion disa "grupe" (heap) për shpërndarjen në zona të ndryshme të memories. Veçanërisht, është e mundur lirimi i grupit tërësisht, pa kaluar dhe liruar veçmas objektet që ndodhen në të.
Parashikohet mundësia e ndërtimit të bibliotekës në mënyrën e sigurisë, në të cilën në kufijtë e blloqeve vendosen faqe verifikimi të memories (guard-page), dhe gjithashtu përdoret rastësia në shpërndarjen e blloqeve dhe enkriptimi i listave të blloqeve të liruar. Masa të tillë ndihmojnë në bllokimin e shumicës së teknikave tipike për eksploatimin e mbingarkimeve të tamponëve në heap. Me aktivizimin e mënyrës së sigurisë, performanca zvogëlohet rreth 3%.
Nga karakteristikat e mimalloc gjithashtu vihet në dukje se nuk ndikohet nga problemet e fryrjes në rast të fragmentimit të madh. Në skenarin më të keq, konsumi i memories rritet me 0.2% për metadat dhe mund të arrijë 16.7% për memories e shpërndarë. Për të eliminuar konfliktet gjatë qasjes në burime, në mimalloc përdoren vetëm operacione atomike.
Burimi: opennet.ru
