2015-02-08 62 views
-1

我开发了一个具有超过3000个源文件的项目;当我想在几分钟后运行我的项目时,它会给我带来如java.lang.OutOfMemoryException: java heap space的错误。我还通过右键单击和VM选项增加了我的项目的内存我给了1024MB我的PC上有两个2GB。OutOfMemoryException:java堆空间

+6

你知道代码可以处理更多的内存吗? 你的项目可能只是越野车,并有内存泄漏或无限递归。 – Kacy 2015-02-08 17:59:49

+0

或者也许代码需要大缓冲区,错误,数组。或者也许它有一些可调参数来控制它抓取的数量。 3000班并不是那么多。这两天都没有2GB内存...... – 2015-02-08 18:01:17

+0

你检查过堆内存大小吗? – 2015-02-08 18:04:59

回答

0

正如您可能知道的,您可以使用java -Xms<initial heap size> -Xmx<maximum heap size>来增加JVM的内存。

但是这只是推迟了这个问题,因为在您的应用程序中可能存在内存泄漏导致堆溢出的地方。我建议你使用像Netbeans Profiler这样的工具,它可以帮助你找出发生内存泄漏的地方。 Netbeans Profiler将允许您查看对象的创建位置,发生垃圾回收的位置等。

+0

我如何找到我为项目使用NetBeans的内存泄漏。发生此问题时,我想清理并生成项目,它给出outOfMemory错误。请帮助我。 – Adolf 2015-02-09 15:35:39

0

这可能是应用程序只是分配大量内存或存在实际泄漏。我的方法是使用内存分析器(如Eclipse MAT)来查看哪些对象占用了最多的内存。

如果它们都有效,那么你可能需要增加堆大小空间。虽然我曾与5000多个类的Web应用程序项目512MB堆,所以我不怀疑这是一个内存泄漏。

您还应该在代码中查找ByteArrayOutputStream的实例,它们也倾向于占用大量内存。