【发布时间】:2015-07-07 17:21:41
【问题描述】:
当我收到此错误时,我使用的是 Java 8(在 Eclipse 中):
java.lang.OutOfMemoryError: Java heap space
我已经尝试过-Xmx 命令,但即使更改 MetaspaceSize 也无法解决问题。当我尝试交换列表的元素时会出现此问题(它的大小
public void permutation(double[] arr, int pos, ArrayList<double[]> list) {
if (arr.length - pos == 1)
list.add(arr.clone());
else
for (int i = pos; i < arr.length; i++) {
swap(arr, pos, i);
permutation(arr, pos + 1, list);
swap(arr, pos, i);
}
}
【问题讨论】:
-
你想做什么?你为什么叫克隆?
-
旁注:我强烈建议您在分支结构中使用大括号,即使只有一个语句。
-
@JaredBurrows 我相信这里的列表只是为了跟踪步骤,因此需要克隆以保持每个步骤的数组状态不变。我可能是错的,虽然我还没有正确阅读。
-
@Joffrey stackoverflow.com/questions/29723998/….
-
@StuPointerException 因为它是一种纯粹的命令式方法,不会改变或使用封闭对象的任何状态,我真的相信根本没有理由重写它(鉴于函数的性质)。话虽如此,静态让下一个程序员一眼就知道该方法不会改变/使用任何状态,并且还可以改进代码的静态分析。
标签: java recursion out-of-memory java-8