0

スペース不足についての新しい質問であることが示唆されているように:

私は3か月前にScalaプログラムを書くことを学びました。プログラムの書き方がヒープスペースの原因になるとは思えないので、次の点を確認してください。

  • ノードとエッジを含むグラフを作成しているとします。「グラフ」は関数の1つのパラメーターです。この関数は、渡されたグラフを探索し、グラフを新しいグラフに展開します。次に、新しいグラフが再度渡され、関数を再帰的に呼び出して再探索します。いくつかの条件に達するまで、グラフの最終バージョンが返されます。

したがって、この場合、途中のグラフがどんどん大きくなっていると、ヒープが不足するのでしょうか。

  • これが悪い習慣である場合、どのようにメモリを効率的に書き込む必要がありますか?

すべての静的情報を格納するために使用されるオブジェクトがありますが、問題が発生しますか?

4

2 に答える 2

3

Graph for Scalaライブラリの使用を検討しましたか?それはあなたのプロジェクトのグラフ表現部分にかなりの足がかりを与えるでしょう。PDFドキュメントはここにあります。

于 2013-01-22T20:11:07.673 に答える
3

したがって、この場合、途中のグラフがどんどん大きくなっていると、ヒープが不足するのでしょうか。

グラフがどれだけ大きくなるかによって異なります。ある時点で、ノードを追加し続けると、ヒープスペースが不足します。

実際には、バグが原因でヒープが不足し、終了条件を見逃して無限ループで終了する可能性があります。

グラフの複数のコピーを作成している場合、つまり、すべての再カットによって新しいディープコピーが作成され、再帰的に呼び出されている間、グラフを保持している場合は、メモリがすぐに不足します。

于 2013-01-22T19:42:20.927 に答える