【问题标题】:JUnit test runs out of memory -- how to increase heap size?JUnit 测试内存不足——如何增加堆大小?
【发布时间】:2011-09-15 16:31:27
【问题描述】:

我正在运行一个抛出异常 OutOfMemory 的 Junit 测试。 测试在内部 NetBeans 6.9.X 开始。在分析它时,我已经 意识到Heap maxSize 是64M。我想增加这个 但我找不到如何做到这一点。

我已经尝试右键单击项目 -> 属性 -> 运行 并在我设置的 VM 选项下 -Xms300M 但这不起作用。

有什么提示吗?

提前致谢。

【问题讨论】:

  • 尝试在 etc/netbeans.conf 中更改/添加 Xms 参数 netbeans_default_options
  • 谢谢,已经试过了,还是不行。当堆达到 64M 时它会崩溃。我已经设置了这个 netbeans_default_options = "-J-Xms384m -J-Xmx512m -J-XX:PermSize=32m -J-XX:MaxPermSize=96m -J-Xverify:none -XX:+HeapDumpOnOutOfMemory"
  • 请发布您的堆栈跟踪。

标签: java netbeans junit heap-size


【解决方案1】:

来自http://wiki.gephi.org/index.php/NetBeans_Tips#How_to_increase_Heap_Size_for_JUnit_test

编辑您的 project.properties 文件并添加以下行:

test.run.args=-Xms128m -Xmx1400m

【讨论】:

  • 很遗憾,该链接现在已损坏。
  • 这仍然适用于 Netbeans 8 吗?当前的 Netbeans 文档没有引用我能找到的那个文件,如果我把它放在规定的地方,什么也没有发生,测试仍然使用默认内存运行。
【解决方案2】:

您还可以通过为您的操作系统设置此环境变量来增加所有 VM 的最大大小:

 _JAVA_OPTIONS=-Xmx300m

【讨论】:

  • 我不知道。这很酷。所以,在 Windows 上你可以这样做: SET /P _JAVA_OPTIONS=-Xmx300M ?太棒了。
【解决方案3】:

你调整了 -Xmx 和 -Xms

-Xms300m 将强制 java 使用不少于 300m,-Xmx300m 将让 jvm 使用不超过 300m

【讨论】:

    【解决方案4】:

    你可以试试这个,看看是否有帮助:

    -XX:MaxPermSize=128m
    

    【讨论】:

    • 没有。这与 permgen 无关。他的总堆用完了。
    • 不,那是不正确的。他没有用完堆。他说“OutOfMemory”(一般来说),我知道 PermGen 参数修复了某种类型的 OOME。
    • 是的。我很想知道为什么你认为这不是一个完全的堆问题,而是具体的 permgen 问题。
    【解决方案5】:

    虽然 Java 程序通常不会在通常意义上泄漏内存,但在列表和映射等集合中可能会不必要地占用内存。使用分析器查看内存的使用位置,您可能会找到优化的机会。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 2014-08-02
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      相关资源
      最近更新 更多