1

日食から次のエラーメッセージが表示されます。

Exception in thread "th3" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Unknown Source)
    at java.util.Arrays.copyOf(Unknown Source)
    at java.util.ArrayList.ensureCapacity(Unknown Source)
    at java.util.ArrayList.add(Unknown Source)
    at Apeiron.FBM.Analysis.Clustering.Key.PatternClusterKey.Load(PatternClusterKey.java:260)
    at Apeiron.FBM.Analysis.UserBin.WaferUserDefineBin.CreatePatternClusterKey(WaferUserDefineBin.java:50)
    at Apeiron.FBM.Analysis.UserBin.UserDefineBin.Load(UserDefineBin.java:244)
    at Apeiron.FBM.Analysis.UserBin.WaferUserDefineBinDictionary.CreateUserDefineBin(WaferUserDefineBinDictionary.java:70)
    at Apeiron.FBM.Analysis.UserBin.UserDefineBinDictionary.Load(UserDefineBinDictionary.java:162)
    at Apeiron.MultiCore.OutputFileCreator.LoadDictionary(OutputFileCreator.java:357)
    at Apeiron.MultiCore.OutputFileCreator.run(OutputFileCreator.java:148)
    at java.lang.Thread.run(Unknown Source)

Apeiron の私のプログラムは、4 つの Threads によって実行され、「org.w3c.dom.Document」で読み取れるファイルを呼び出します。そのファイルが WaferUserDefineBin のオブジェクトになります。

それで、私はいくつかの実験をしました。私が把握している現象は次のとおりです
。 1.ヒープサイズではないと思います。私のEclipseの最大メモリは256Mですが、私のプログラムは40M〜50Mしか使用しません。そして、eclipse.iniファイルからヒープサイズを512Mに拡張しようとしました。

  1. WaferUserDefineBin を変更したファイルサイズの問題です。ファイルのサイズを小さくすると、エラーは発生しません。

  2. マルチスレッドの問題です。ファイルのサイズが大きくても、シングルスレッドでうまく動作します。

  3. また、ファイルの読み取り領域でロックを使用していますが、同じエラーが発生します。

    私の英語力が低くてすみません。事前にご協力いただきありがとうございます。

4

1 に答える 1

3

メモリ (ヒープ サイズ) を増やす必要がありますが、Eclipse 自体ではなく、プログラムに対してです。

これらの設定は、「実行構成」にあります。「VM引数」領域のある「引数」タブがあります。そこに -Xm を入れてください。

于 2013-01-11T05:24:53.707 に答える