虽然我知道对于大型矩阵,可能没有足够的内存空间。但在本例中该值相对较小 (9999)。该值是一个 double 型 (4.0),因此根据我的资源,包含 8 个字节的数据(每个 double 型)。因此理论上,一个 n = 9999(n = 列数和行数)的矩阵在 Java 中需要 (9999^2 * 8) 个字节(不包括任何开销),这比我当前的内存要少得多,即使碰巧有几个矩阵 (2-3)。初始化matrixA时出现错误。
为什么会发生错误?
int n = 9999;
double[][] matrixA = new double[n][n];
double[][] matrixB = new double[n][n];
// Matrix Multiply uses standard ijk algorithm to multiply matrixA and matrixB
// and returns a 2d double array (matrix)
double[][] matrixC = MatrixMultiply(matrixA, matrixB);
最佳答案
9999x9999x8 = 799840008 字节数据。
您是否正在设置 JVM 内存设置?客户端 JVM 的默认值为 256 兆。如果 JVM 设置不正确,那么系统内存是否足够高也没有关系。
有关设置 JVM 堆设置的更多详细信息,请参见此处:What are the -Xms and -Xmx parameters when starting JVM?
关于对于相对较小的矩阵,java.lang.OutOfMemoryError : Java heap space,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58019640/