我的日食中有以下错误消息。
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的对象。
所以,我做了一些实验。
我发现的现象如下:
我认为这与堆大小无关。
我的日食的最大记忆是256M,但我的程序仅使用40M~50M。
我试图从eclipse.ini文件中将堆大小扩展到512M。
更改WaferUserDefineBin的文件大小问题。 如果我减小文件的大小,则不会发生错误。
这是多线程的问题。 即使文件的大小很大,它也能在单线程中运行良好。
另外,我在读取文件的区域使用Lock,但是发生了相同的错误。
我很抱歉英语能力差。 非常感谢您的帮助。
答案 0 :(得分:3)
您需要增加内存(堆大小),但是对于您的程序,而不是Eclipse本身。
您可以在“运行配置”中找到这些设置。有一个带有“VM参数”区域的“Arguments”选项卡。把你的-Xm放在那里。