2014-11-06 57 views
0

我试过以下方法:如何在Java中创建非常大的2D矩阵?

int [] [] Matrix = new int [Integer.MAX_VALUE-5] [Integer.MAX_VALUE-5];

但我得到这个异常:异常线程“main” java.lang.OutOfMemoryError:Java堆空间。

我的意思是我想存储为n×n大小的矩阵,其中n约为500000但我的Netbeans的显示内存溢出异常仅售10000,我如何增加内存

+1

没有办法,你有数组足够的内存... – Thilo 2014-11-06 08:22:37

+0

你有要求来处理这么大的数据块使用Java ?还是它必须是“A”HL语言? – ha9u63ar 2014-11-06 08:23:44

+1

是否有问题需要解决,或者您是否只是拨动java? – Hannes 2014-11-06 08:24:40

回答

2

您应该看看sparse matrix,它允许您处理仅包含相对较少值的巨大矩阵。一个稀疏矩阵格式的

实例:

  • CSR(压缩稀疏行) - 在连续的数组存储非零元素与含有列索引和指针另一个两个阵列到行开头
  • COO(坐标列表) - 元组(行,列值)的存储阵列
+0

这就是我一直在寻找的东西。非常感谢。万岁Erbureth :) – 2014-11-06 15:46:34

4

有没有办法,数组将适合内存。

Integer.MAX_VALUE的是2^31。

两个尺寸是指在每4个字节存储2^62的整数。

1

为10000×10000设置堆大小为512MB:java -Xmx512m。 500000 x 500000将您的堆大小设置为大约1TB:java -Xmx1000000m。您可能需要等待几年,才能将具有该内存量的计算机提供给普通大众...