Nagbukas ang Microsoft ng library sa ilalim ng lisensya ng MIT
Ang pangunahing tampok ng mimalloc ay ang compact na pagpapatupad nito (mas mababa sa 3500 linya ng code) at napakataas na pagganap. SA
Upang suriin ang pagganap, isang hanay ng mga umiiral na
Ang mataas na pagganap ay nakakamit pangunahin sa pamamagitan ng paggamit ng libreng list sharding. Sa halip na isang malaking listahan, ang mimalloc ay gumagamit ng isang serye ng mas maliliit na listahan, na ang bawat isa ay nakatali sa isang pahina ng memorya. Binabawasan ng diskarteng ito ang fragmentation at pinapataas ang lokalidad ng data sa memorya. Ang pahina ng memorya ay isang pinagsama-samang hanay ng mga bloke na may magkatulad na laki. Sa 64-bit system, karaniwang 64 KB ang laki ng page. Kung walang occupied na mga bloke na natitira sa pahina, ito ay ganap na napalaya at ang memorya ay ibabalik sa operating system, na binabawasan ang mga gastos sa memorya at pagkapira-piraso sa mga programang matagal nang tumatakbo.
Maaaring isama ang library sa yugto ng pag-link o i-load para sa isang naka-assemble na program (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Nagbibigay din ang library
Posibleng itayo ang library sa isang safe mode, kung saan ang mga espesyal na pahina ng pagsusuri ng memorya (mga pahina ng bantay) ay pinapalitan sa mga hangganan ng bloke, at ginagamit ang randomization ng pamamahagi ng block at pag-encrypt ng mga listahan ng mga napalaya na bloke. Ginagawang posible ng mga naturang hakbang na harangan ang pinakakaraniwang mga diskarte para sa pagsasamantala sa mga buffer overflow na nakabatay sa heap. Kapag pinagana mo ang Safe Mode, bumababa ang performance ng humigit-kumulang 3%.
Kabilang sa mga tampok ng mimalloc, nabanggit din na hindi ito madaling kapitan ng mga problema sa bloating dahil sa malaking fragmentation. Sa pinakamasamang sitwasyon, tumataas ang pagkonsumo ng memory ng 0.2% para sa metadata at maaaring umabot sa 16.7% para sa distributed memory. Upang maiwasan ang mga salungatan kapag nag-a-access ng mga mapagkukunan, ang mimalloc ay gumagamit lamang ng mga atomic na operasyon.
Pinagmulan: opennet.ru