【发布时间】:2017-09-03 03:39:37
【问题描述】:
我必须阅读这样制作的 226mb 的文本文件:
0 25
1 1382
2 99
3 3456
4 921
5 1528
6 578
7 122
8 528
9 81
第一个数字是索引,第二个是值。我想加载一个短读这个文件的向量(8349328个位置),所以我写了这段代码:
Short[] docsofword = new Short[8349328];
br2 = new BufferedReader(new FileReader("TermOccurrenceinCollection.txt"));
ss = br2.readLine();
while(ss!=null)
{
docsofword[Integer.valueOf(ss.split("\\s+")[0])] = Short.valueOf(ss.split("\\s+")[1]); //[indexTerm] - numOccInCollection
ss = br2.readLine();
}
br2.close();
事实证明,整个负载占用了令人难以置信的 4.2GB 内存。真的我不明白为什么,我期望一个 15MB 的向量。 感谢您的任何回答。
【问题讨论】:
-
您如何确定内存使用情况?请记住
Short与short不同;每个元素都有一个额外的引用(指针)。
标签: java file memory text load