【问题标题】:Ant with JUnit task - OutOfMemoryErrorAnt 与 JUnit 任务 - OutOfMemoryError
【发布时间】:2012-08-10 20:04:34
【问题描述】:

我有一个有趣的问题。我正在使用 Ant,它通过 build.xml 元素执行 JUnit 测试(由 50 个测试组成的测试套件)。问题是我收到 OutOfMemoryError。

我使用 ANT_OPTS 参数扩大了堆空间,但没有帮助。当我在 Eclipse 中执行相同的测试套件时——一切都很好——由于 GC,内存被释放。

我认为这个问题与 Ant 及其 JUnit 任务有关。

也许测试记录是原因(但另一方面我有 printsummary="false",[也许 outputtoformatters 也应该设置为 false ???])。

我的第二个猜测是 TEST***.xml 文件(在测试结束时生成)保存在内存中并在测试结束时刷新。有没有办法减少该文件中的日志?

各位,请给我一些线索。

【问题讨论】:

  • 缩小你的问题。从一个 junit 测试开始(注释掉所有其他测试),看看会发生什么。
  • 当套件包含一个测试 - 一切都很好。只有大套房会导致问题。
  • 你能贴出实际的代码sn-p吗?

标签: ant junit out-of-memory


【解决方案1】:

需要在junit任务中设置maxmemory属性。请参阅Ant documentation

【讨论】:

  • 我已经试过了。 maxmemory 选项仅在 fork="true" 时有效。它没有产生任何效果。还有什么想法吗?
  • 嗯 - 你能从你得到的异常中发布堆栈跟踪吗?您可能会用完堆空间以外的东西,例如 PermGen 空间。
  • 不,它不是 PermGen。我已将 PermGen 的空间设置为 256m 的值。
  • 好的 - 如果你不按照大家的要求发布堆栈跟踪,就很难提供更多帮助。
【解决方案2】:

总而言之,我想说问题的根源在于日志记录。日志被发送到流并且没有被刷新。关闭日志后 - 一切都很好。

【讨论】:

    【解决方案3】:

    默认情况下,fork 模式是关闭的。请尝试开启 fork 模式并将 forkmode 设置为pertest

    【讨论】:

    • 我认为这无济于事。我有 50 个测试的 @Suite 跑步者。这样的一堆被视为一个单独的测试——一个 TEST-xxx.xml 报告文件。我认为报告生成将在该分叉 JVM 中执行,因此不会产生任何效果。还有什么想法吗?
    • @Lucas Smith:请发布最终的 ant 文件内容和异常堆栈跟踪。
    猜你喜欢
    • 1970-01-01
    • 2019-01-11
    • 2011-10-05
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    相关资源
    最近更新 更多