在Java中声明一个大型的2d Double数组

时间:2014-12-26 20:51:05

标签: java arrays exception memory

我试图在java中声明一个double 2d数组,如下所示:

double [][]x=new double[640][15360];

但我得到以下例外:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

我试图从项目属性增加堆大小,但我仍然得到相同的异常。

任何提示?

2 个答案:

答案 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,但这不起作用

您很可能没有正确设置堆大小。