gpt4 book ai didi

java - 在 Java 中读取字典文件时内存过多

转载 作者:行者123 更新时间:2023-11-30 08:12:48 25 4
gpt4 key购买 nike

我读了一本可能有 100MB 左右的字典(有时会变大,最大可达 500MB)。它是一个简单的两列字典,第一列是单词,第二列是一个浮点值。我以这种方式阅读字典 file :

BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while((line = br.readLine()) != null) {
String[] cols = line.split("\t");
setIt(cols[0], cols[1]);

对于 setIt 函数:

public void setIt(String term, String value) {
all.put(term, new Double(value));
}

当我有一个大文件时,加载它需要很长时间,而且经常会出现内存不足的情况。即使文件大小合理 (100MB),它也确实需要 4GB 的 Java 内存才能运行。

有什么线索可以在不改变整个包结构的情况下改进它吗?

编辑:我在 -Xmx1g 中使用了一个 50MB 的文件,但我仍然收到错误。

更新:我对文件进行了一些迭代并修复了它们,现在内存问题已部分解决。尚未尝试属性和其他解决方案并就此进行报告。

最佳答案

您正在为每一行分配一个新的字符串。有一些与 String 相关的开销。参见 Here进行计算。 This文章还讨论了 Java 中对象内存使用的主题。

关于字符串的更高效内存替换的主题有一个堆栈溢出问题 here .

您是否可以采取一些措施来避免所有这些分配?例如,您是否可以在数据结构中将有限数量的字符串表示为整数,然后使用较小的查找表进行翻译?

关于java - 在 Java 中读取字典文件时内存过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30251265/

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