微軟在麻省理工學院許可下開設了一個圖書館
mimalloc 的主要特點是其緊湊的實現(少於 3500 行程式碼)和非常高的效能。在
為了評估性能,一組現有的
高效能主要是透過使用空閒清單分片來實現的。 mimalloc 沒有使用一個大列表,而是使用一系列較小的列表,每個列表都綁定到一個記憶體頁。這種方法減少了碎片並增加了記憶體中的資料局部性。記憶體頁是一組大小相似的區塊的分組。在 64 位元系統上,頁面大小通常為 64 KB。如果頁面中沒有剩餘佔用的區塊,則將其完全釋放並將記憶體傳回給作業系統,這會減少長時間運行的程式中的記憶體成本和碎片。
該庫可以包含在連結階段或為已組裝的程式載入(“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”)。圖書館也提供
可以以安全模式建立庫,其中在區塊邊界處替換特殊記憶體檢查頁(保護頁),並使用區塊分佈的隨機化和已釋放區塊清單的加密。這些措施可以阻止最常見的利用基於堆疊的緩衝區溢位的技術。啟用安全模式後,效能會下降約 3%。
在mimalloc的特性中,也值得注意的是它不易受到大碎片導致的膨脹問題的影響。在最壞的情況下,元資料的記憶體消耗會增加 0.2%,分散式記憶體的記憶體消耗會達到 16.7%。為了避免存取資源時發生衝突,mimalloc 僅使用原子操作。
來源: opennet.ru