我试图在java中声明一个double 2d数组,如下所示:
double [][]x=new double[640][15360];
但我得到以下例外:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
我试图从项目属性增加堆大小,但我仍然得到相同的异常。
任何提示?
答案 0 :(得分:1)
这个数组不是问题所在。通过创建这个数组,你可以分配大约78MB(640*15360*8 bytes
),Java可以处理得很好,而根本不需要调整堆大小。尝试将数组声明单独放在main
方法中,它可以正常工作。
你正在做的其他事情就是超载你的堆。
答案 1 :(得分:0)
当我使用选项-Xmx128m
运行它时,它运行正常。
public class Main {
public static void main(String[] args) {
double[][] x = new double[640][15360];
System.out.printf("%,d bytes allocated%n", x.length * x[0].length * 8);
}
}
打印
78,643,200 bytes allocated
我尝试将堆高达1024,然后高达1500,但这不起作用
您很可能没有正确设置堆大小。