我想将 1 亿个术语及其频率(在文本数据库中)存储到 HashMap <String, Double>
中.它给了我“内存不足”错误。我试图将堆空间增加到 -Xmx15000M
.但是它运行了半个小时,然后再次抛出相同的异常。我试图从中读取单词和频率的文件大小为 1.7GB。
任何帮助将不胜感激。
谢谢:-)
最佳答案
对于这样的文字处理,如果您可以忍受更长的查找时间,答案通常是树而不是 HashMap 。这种结构对于自然语言来说非常节省内存,其中许多单词都有共同的起始字符串。
根据输入,Patricia 树可能会更好。
(另外,如果这确实是来自自然语言的词,你确定你真的需要 100,000,000 个词条吗?大多数常用词的数量都低得惊人,商业解决方案(词预测、拼写校正)很少使用超过 100,000 个词与语言无关。)
关于java - Java中的HashMap,1亿个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4080370/