如果您沒有RAM,則必須將矩陣存儲在文件中,並根據需要查找所需的數據。
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("matrix")));
for(int i=0;i<25000;i++){
for(int j=0;j<25000;j++){
double value = //Compute value
out.writeDouble(value);
}
}
out.close();
然後獲取位置值(I,J)
FileInputStream fis = new FileInputStream("matrix");
DataInputStream in = new DataInputStream(fis);
fis.getChannel().position((i * 25000L + j) * (Double.SIZE/8));
double value = in.readDouble();
注意文件中讀取已經很慢,但求一個特定的位置更慢。如果你能弄清楚如何訂購你的讀寫,所以你不必每次都去尋找,你的狀態會更好。另外,根據打算使用矩陣的方式,您可能希望將每列或每行放在一個單獨的文件中。您可能還想看看使用Octave或Matlab代替Java。
什麼編程語言? – 2013-03-18 21:32:32
@OliCharlesworth:java – anshulankush 2013-03-18 21:34:33
這些循環與內存不足無關 – 2013-03-18 21:34:50