2014-11-06 107 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。您可能需要等待幾年,才能將具有該內存量的計算機提供給普通大衆...