OK、残念ながら作業を完了するために巨大なデータ構造を使用する必要があるプログラムを書いていますが、初期化中に「メモリ不足エラー」で失敗しています。それが何を意味し、なぜそれが問題なのかは完全に理解していますが、プログラムでこの大きな構造を使用する必要があり、それを保存する他の方法がわからないため、それを克服するのに苦労しています。
このプログラムはまず、私が提供する大量のテキスト ファイルのコーパスにインデックスを付けます。これはうまくいきます。
次に、このインデックスを使用して、大きな 2D 配列を初期化します。この配列には n² のエントリが含まれます。ここで、"n" はテキスト コーパス内の一意の単語の数です。私がテストしている比較的小さなチャンク (約 60 ファイル) では、約 30,000x30,000 のエントリを作成する必要があります。意図した完全なコーパスでも実行すると、これはおそらく大きくなります。
インデックス作成後、データ構造を初期化している間(後で作業します)、毎回一貫して失敗します。
私が行ったことは次のとおりです。
int[]
の代わりにプリミティブを使用するようにコードを修正します。TreeMap
- 冗長な構造などを排除する...
- また、
-Xmx2g
割り当てられたメモリを最大化するためにプログラムを実行しました
これは単純なコード行のソリューションではなく、非常に新しいアプローチが必要になる可能性が高いと確信しています。私はそのアプローチが何であるかを探しています、何かアイデアはありますか?
ありがとう、B.