在 Mac OS X 上映射的成本是多少?

What is the cost of mmaping on Mac OS X?

我有一个算法,如果我可以保留大约 20 个大小为 4GB 的内存地址块,我的生活将大大简化。实际中,我从来没有用过超过4GB的,只是不知道哪个block会提前填满

如果我 mmap 20 个 4GB 块似乎一切正常——直到我写入内存 OS 似乎实际上没有分配任何东西。

我有什么理由不应该使用 mmap 分配 80GB 内存,然后只使用少量内存?我假设设置这些缓冲区需要一些成本。我可以测量吗?

一次映射 80GB 的唯一缺点是使用了 page table has to be created for the full 80GB. So if the pages are 4kB, this table could consume a lot of memory (unless huge pages

对于这样的大小,最好使用一个或多个 滑动 mmap 视图(即在需要时创建和删除它们)。

在 Windows 上,可以使用 RamMap 检查 mmap/page 表的内存使用情况,不确定 Mac。