1

我的 Eclipse 有以下错误消息。

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 程序由四个线程完成并调用一个可以用“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 回答