【发布时间】:2011-01-28 10:24:25
【问题描述】:
好的,所以我正在编写一个程序,不幸的是,它需要使用一个巨大的数据结构来完成它的工作,但是它在初始化期间由于“内存不足错误”而失败。虽然我完全理解这意味着什么以及为什么它是一个问题,但我很难克服它,因为我的程序需要使用这个大型结构,而我不知道任何其他方式来存储它。
程序首先索引我提供的大量文本文件。这很好用。
然后它使用这个索引来初始化一个大的二维数组。该数组将有 n² 个条目,其中“n”是文本语料库中唯一单词的数量。对于我正在测试的相对较小的块(大约 60 个文件),它需要生成大约 30,000x30,000 个条目。一旦我在完整的预期语料库上运行它,这可能会更大。
它每次都会失败,在它索引之后,而它正在初始化数据结构(稍后会处理)。
我做过的事情包括:
- 修改我的代码以使用原始
int[]而不是TreeMap - 消除冗余结构等...
- 另外,我已经使用
-Xmx2g运行程序以最大限度地使用我分配的内存
我相当有信心这不会是一个简单的代码行解决方案,但很可能需要一种非常新的方法。我正在寻找这种方法是什么,有什么想法吗?
谢谢, B.
【问题讨论】:
-
请注意,使用这些参数启动 Eclipse 不会有帮助,除非您的代码是 Eclipse 插件。如果你只是使用 Eclipse 作为 IDE,那么你需要更改应用程序的运行配置,而不是 Eclipse 的启动。
-
啊,谢谢约阿希姆。我没有单独运行它,它仍然给我同样的错误(虽然需要更长的时间才能到达那里,我想这是一个改进)
标签: java eclipse large-data-volumes heap-memory out-of-memory