目标是建造非常大的树。非常大是指数亿个节点,适合几 GB。
问题是常见的数据结构有太多的开销。我买不起“节点”对象和子“地图”。我需要以非常紧凑的方式将其直接编码到内存中。
因此,我想知道是否存在一些具有整数作为键和值的树的内存高效实现,而不在内部使用对象,因此需要(键的 4 字节 + 值的 4 字节 + 子索引的 4 字节 + 免费的几个字节散列空间 = 平均每个条目 15 个字节)这将允许我使用外部映射 int<->keys 和 int<->values 来搜索树。
任何人?
PS:在内部使用对象至少要多使用 5 倍空间:8 个引用 + 4 个额外的哈希空间 + 16 个对象头 + 8 个键引用 + 8 个值引用 + 8 个父引用 + 8 个子引用 + (16 + x) 用于子映射 obj = 每个条目将近 76+x 个字节。(例如,我们的默认实现每个条目需要大约 100 个字节)