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();
ファイルの読み取りはすでに非常に遅いですが、特定の位置へのシークはさらに遅いことに注意してください。毎回シークする必要がないように読み取りと書き込みを順序付ける方法を理解できれば、はるかに良い状態になります。また、マトリックスの使用方法に応じて、各列または行を個別のファイルに配置することもできます。Java の代わりに Octave または Matlab を使用することも検討してください。