2017-03-17 64 views
2

我有一個算法,我的生活將大大簡化,如果我可以保留約20塊大小爲4GB的內存地址。在實踐中,我從不超過4GB,但我不知道哪個塊會提前填滿。在Mac OS X上進行映射的成本是多少?

如果我mmap 20塊4GB的一切似乎工作正常 - 直到我寫入內存操作系統似乎並沒有實際分配任何東西。

是否有任何理由我不應該使用mmap來分配80GB的內存,然後只使用少量的內存?我認爲設置這些緩衝區有一定的成本。我可以測量它嗎?

回答

2

一次mmap-80GB的唯一缺點是必須爲完整的80GB創建一個page table。因此,如果頁面爲4kB,則此表可能會消耗大量內存(除非使用huge pages)。

對於像這樣的尺寸,最好使用一個或多個滑動 mmap-ed視圖(即在需要時創建並移除它們)。

在Windows上,可以使用RamMap來檢查mmap/page表的內存使用情況,對Mac沒有把握。