gpt4 book ai didi

java - 推荐用于 Java 实现的低内存 HashMap

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:51:03 24 4
gpt4 key购买 nike

我目前正在处理一个与编程相关的问题,我试图在其中制作大量数据的散列图。数据的键是 CharSequence 的自定义低内存实现,它实现了 hashCode() 和 equals(...),值是 Integer 对象。

这个哈希表中可能有数百万个条目,我设法通过让 Integer 成为文件中指向我希望散列的数据的指针来大幅减少该值的内存使用,但问题是 key 可能是十个字节数(平均 25 字节),并且在 HashMap 的默认实现中,键需要保存在内存中。

我需要一个内存开销低的 HashMap ,它可以将键分页到磁盘或存储键的哈希表示。如果 key 本身经过哈希处理,那么我会担心哈希冲突。

理想情况下,我希望每 50MB 的堆空间能够在映射中存储一百万个条目(一个 25 字节的字节数组在键中,Integer 对象在值部分)。

有没有人使用过为减少键占用空间而优化的低内存文件系统支持的 map ?

谢谢,

克里斯

最佳答案

您可以使用 Java 的 HashMap 并编写一个 FileKey 类,该类采用 RandomAccessFile、偏移量和长度,在构造时预先计算哈希,并通过从文件中读取数据以进行比较来实现 Comparable。

结合简单的 MRU 缓存,您可以使用另一个以相同键为键的 HashMap 在内存中保留一些键,但它使用自定义比较器只比较偏移量和长度值(而不是文件数据) ).

关于java - 推荐用于 Java 实现的低内存 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2384963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com