对于相对较小的矩阵,java.lang.OutOfMemoryError : Java heap space,

标签 java matrix

虽然我知道对于大型矩阵,可能没有足够的内存空间。但在本例中该值相对较小 (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/

相关文章:

c - 将二维数组转换为一维数组

python - 二维数组和一维数组的点积不同于矩阵和一维数组

java - 从 DFA 中提取语言的算法

java - 如何记录错误级别为ERROR的消息

java - Drools:AfterMatchFiringEvent 使用 OR 条件多次触发同一规则?

java - 遇到编译错误的问题

r - "asymmetric"成对距离矩阵

matlab - 获取 arrayfun 中二维矩阵当前元素的索引

java - java 不遍历矩阵的长度

java - 二维数组的随机生成器,简单游戏的累加字符串字母