私は巨大な2D配列を作成しようとしています。Javaで巨大な2D配列を作成する
String[][] arr = new String[100000][100000];
しかし、実行時に、私は私のヒープ領域を増やす以外にjava.lang.OutOfMemoryError: Java heap space
を取得し、どのように私はこの例外を取得しないようにするには?あなたが欲しい今までにすると、このList<List<String>> arr = new ArrayList<List<String>>();
のように宣言しList
のList
を始めることができ
データソースは何ですか?あなたは本当にすべてのデータを同時に処理する必要がありますか?それ以外の場合は、データをファイルに書き込んだり、領域を解放したり、処理アルゴリズムをデータバッチで処理したり、書き込み中にフィルタリングしたりすることを考慮する必要があります。 –
実際にそのRAMは大量にありますか?もしそうなら、ヒープサイズ '-Xmx20g'を増やすことができます。http://stackoverflow.com/questions/14763079/what-are-the-xms-and-xmx-parameters-when-starting-jvms#14763095を参照してください。しかし、これは非常に速くないと考えるべきです。別のアルゴリズムやある種の分散キャッシュ/メモリDBの使用を検討する必要があります。 –
@Mortiz巨大なデータを格納するための代替アルゴリズムを提案できますか? –