JUnit测试内存溢出--如何增加堆大小?

11

我正在运行一个Junit测试,但是遇到了内存不足的异常。这个测试是在NetBeans 6.9.X环境下启动的。通过对其进行分析,我发现堆的最大大小为64M。我想将其增加,但是我无法找到如何做到这一点。

我已经尝试了右键单击项目->属性->运行,在VM选项下设置了-Xms300M,但是这没有起作用。

有什么提示吗?

先感谢您的帮助。


尝试在etc/netbeans.conf中更改/添加Xms参数netbeans_default_options。 - Hari Menon
谢谢,我已经尝试过了,但它并没有起作用。当堆达到64M时,它会崩溃。我已经设置了netbeans_default_options =“-J-Xms384m -J-Xmx512m -J-XX:PermSize=32m -J-XX:MaxPermSize=96m -J-Xverify:none -XX:+HeapDumpOnOutOfMemory”。 - Luixv
请发布您的堆栈跟踪。 - djangofan
5个回答

7

很遗憾,该链接现在已经失效了。 - Wheezil
1
这是该页面的存档版本:http://web.archive.org/web/20130314101004/http://wiki.gephi.org/index.php/NetBeans_Tips - Roshan
这是否仍适用于Netbeans 8?当前的Netbeans文档中没有我能找到的有关该文件的参考,如果我将其放在指定的位置,仍然没有任何反应,测试仍然使用默认内存运行。 - Wheezil

5
你可以通过为操作系统设置以下环境变量来增加所有虚拟机的最大大小:

请参考如下内容:

 _JAVA_OPTIONS=-Xmx300m

我不知道那个。太酷了。所以,在Windows上你可以这样做:SET /P _JAVA_OPTIONS=-Xmx300M?太棒了。 - djangofan

3

您是否已经调整了-Xmx和-Xms参数?

-Xms300m将强制Java使用不少于300m的内存,而-Xmx300m将允许JVM使用不超过300m的内存。


1
你可以尝试这个,看看是否有帮助:
-XX:MaxPermSize=128m

不是PermGen的问题。他的总堆空间用尽了。 - Miserable Variable
不,那是不正确的。他没有用完堆空间。他说“OutOfMemory”(一般而言),我知道PermGen参数可以修复某种类型的OOME。 - djangofan
确实。不过我很好奇,您为什么认为这不是总堆问题,而是特定的permgen问题呢? - Miserable Variable

0

虽然通常情况下Java程序不会发生内存泄漏,但在集合(如列表和映射)中可能会出现不必要的内存占用。使用分析器查看内存使用情况,您可能会发现优化的机会。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接