问题
我有一个构建服务器,它通过所有测试,但在某些机器上,由于内存限制,测试失败。
建议的解决方案
我想为我的Ant构建脚本添加精确的内存限制 - 是否有一种简单的方法可以执行此操作,以便用于编译,构建和测试程序的所有JVM具有完全相同的内存规范?另外,请注意:我不想通过向shell脚本添加某些“-Xmx”标志来“发现”修复 - 相反,我希望内存限制是ANT构建的自然和固有方面。
最重要的是:正如您所料,这里的优先级是我不希望由于未知的,机器特定的JVM参数而导致测试失败。相反,如果JVM低于内存要求,我希望在编译/测试/等之前完全停止构建。
理由
当特定的单元测试由于内存而失败时,这是非常令人不安的,因为您不知道故障是由于错误的代码(即内存泄漏)还是仅仅是糟糕的硬件/ JVM设置。因此,希望在构建引擎中使“存储器”成为“非移动”部分。
答案 0 :(得分:1)
取决于你如何运行测试,你没有提到。
例如,junit task具有maxmemory
属性。
如果你没有分叉,你可能还会遇到内存问题。
更多详情可让人们更好地定位答案。
编辑后
您指定JVM参数,即使在计算机上定义了系统属性,它们也可以被用户,CI系统等覆盖。
此外,测试需要基本上任意数量的内存 - 除非你知道测试所需的内存最多,但在现实生活中,我不知道如何消除内存耗尽的可能性。
您的Ant构建,脚本和任务参数是定义一致内存参数的方法,并确保执行JVM在启动时处于一致状态。