我的内存不足错误。我有一个大范围的输入(2^40),这是太大,不能立即举行。每个输入是一个String[]
。相反,我想我会在每个输入上运行测试程序,将结果写入文件,然后丢弃输入。最长输入的length
是42,所以这不是导致溢出的错误。我不认为我理解垃圾收集。Java:垃圾回收
PowerSet
就像是一个懒惰的列表 - 直到调用.next()
才算出结果。每个结果返回baseSet
的一个子集。 baseSet
是长度为40的字符串[]。 runTests
对输入进行了一些分析并将其写入文件。
PowerSet argSetSet = powerset(baseSet);
while (argSetSet.hasNext()) {
runTests(argSetSet.next()); //saves output to file
}
这会导致内存不足错误。但是我没有将argSetSet.next()的结果保存在任何地方,那么为什么会发生这种情况呢?我不需要存储来自next()
或runTests()
的任何数据。我如何确保它们都被垃圾收集?
如果我注释掉runTests()
,它运行良好。
什么是确切的错误信息?它是一个'OutOfMemoryError',它表明太多的对象?或者是一个'StackOverflowError',它提示了一个递归错误? – McDowell 2009-11-04 17:30:19
错误是'OutOfMemory' – 2009-11-04 20:46:12