“线程中的异常”;“线的东西”;java.lang.OutOfMemoryError:java堆空间。我能做什么?

“线程中的异常”;“线的东西”;java.lang.OutOfMemoryError:java堆空间。我能做什么?,java,eclipse,multithreading,out-of-memory,Java,Eclipse,Multithreading,Out Of Memory,我有一条来自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 ja

我有一条来自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

  • WaferUserDefineBin更改的是文件大小问题。 如果我减小文件的大小,就不会发生错误

  • 这是多线程的问题。 即使文件的大小很大,它也能在单线程中执行良好的操作

  • 此外,我在读取文件的区域使用了一个锁,但也发生了相同的错误

    我很抱歉我的英语能力差。 事先非常感谢你的帮助


  • 您需要增加内存(堆大小),但这是为了您的程序,而不是Eclipse本身


    您可以在“运行配置”中找到这些设置。有一个选项卡“Arguments”,其中有一个区域“VM Arguments”。把你的-Xm放在那里。

    当然这是一个堆空间问题-你的第一条线索应该是堆栈跟踪顶部的“java.lang.OutOfMemoryError:java heap space”。我衷心感谢你。我为你解答我的问题。“在Run->Run Configuration中找到您正在运行的类的名称,选择它,单击Arguments选项卡,然后将:-Xms512M-Xmx1524M添加到VM Arguments部分”但是,我不知道eclipse.ini和“Run Configurations”之间的区别。实际上,我主要使用C。