我想在机器上构建一个尽可能大的哈希表。我在想,在初始化时我会声明一大块内存供哈希表使用,但我不清楚最好的方法是什么。我有下面列出的各种想法和问题。Stack Overflow 上有很多相关的帖子,但我仍然很感激你的想法。
假设我有 16GiB 的 RAM 可以玩。
只需选择一个像 8GiB 这样的数字并始终分配那么多,并希望系统的其余部分可以使用其余部分。如果我选择这样做,获得 8GiB 的最佳方式是什么?这是一个 64 位系统,所以我可以调用
malloc(1<<33)
它并且它可能会工作,但它足够大,我认为碎片可能是一个问题。那么我最好分配 8 个单独的 1GiB 块吗?而不是选择一个数字,我只想要求所有/大部分剩余的物理内存。我天真地以为我可以一直调用
malloc
直到它返回NULL
,但是乐观的内存分配使它非常无用(它似乎也让我分配了我所有的硬盘驱动器)。像让我查询内存使用情况这样的实用程序top
,vmstat
是否有系统调用可以用来获取相同的信息?我只需要为此目的的物理内存是否正确?我以前从未使用
mmap
过,我应该考虑将它用于构建一个巨大的哈希表吗?我的直觉是,对整个表的随机访问对mmap
.
任何帮助都会很棒!