java.lang.OutOfMemoryError:java堆空间错误未通过-Xmx和-Xms解决

java.lang.OutOfMemoryError:java堆空间错误未通过-Xmx和-Xms解决,java,Java,我是java初学者,我试图编写一个两个矩阵求和的代码,但我有一个错误: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at Main.main(Main.java:11) 我尝试了所有这些命令: $ java Main $ java Main -Xmx2048m $ java Main -Xms1024m $ java Main -Xms1024m -Xmx2048m $ java -Xmx

我是java初学者,我试图编写一个两个矩阵求和的代码,但我有一个错误:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at Main.main(Main.java:11)
我尝试了所有这些命令:

$ java Main
$ java Main -Xmx2048m
$ java Main -Xms1024m
$ java Main -Xms1024m -Xmx2048m
$ java -Xmx2048m Main
$ java -Xms1024m Main
$ java -Xms1024m -Xmx2048m Main
但都会给出相同的错误信息

代码如下:

public class Main
{
    public static void main(String[] args)
    {
        final int n = 10000;

        double A[][] = new double[n][n];
        double B[][] = new double[n][n];
        double S[][] = new double[n][n];

        int i,j;

        for (i = 0; i<n; i++)
        {
            for (j = 0; j<n; j++)
            {
                A[i][j] = 1.0d / ((double) i*j);
                B[i][j] = 1.0d / ((double) i*j);
            }
        }

        for (i = 0; i<n; i++)
        {
            for (j = 0; j<n; j++)
            {
                S[i][j] = A[i][j] + B[i][j];
            }
        }
    }
}

这些标志起作用,但您的计算结果不正确

您有
3个
数组,每个数组都有
10000*10000*8B
值。
为此,您需要
3*10000*10000*8字节
。。。这是
2289MB

这已经超过了
2048


除此之外,这些
3
数组中的每一个都包含
10000
引用。。。但是与这些值相比,它的内存开销非常小(小于1MB)。

我可以在没有任何Xms或Xmx设置的情况下运行代码。我的笔记本电脑有16 GB内存


您正在尝试初始化非常大的二维阵列。您可以尝试使用
n=100
。您的代码需要~3 x 8 x 10000 x 10000 BI才能在我的eclipse中运行您的程序。但我的机器有16GB内存。有了-Xmx2048m和-Xms的放样,它工作得很好哦,是的。。。我很愚蠢——(我不是计算机科学家:我是数学家!)谢谢!
$ java -version
openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3)
OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3,     mixed mode, sharing)