我们在CircleCI上使用SBT 0.13和Java 8 JVM来构建包含多个子项目的Play应用程序。我们偶尔会在CircleCI上发现内存不足的问题,因为它超过了4 GB的内存使用量,因此中止了构建。SBT内存不足与子项目
昨天,我在我们的版本中添加了一个新的子项目,并且几乎所有的版本现在在内存不足问题上都失败了。看起来添加子项目也增加了用于构建的内存量。
我已经试过几件事情,以减少我们的记忆负荷:
- 添加
_JAVA_OPTIONS: "-Xms512m -Xmx2048"
到circle.yml
作为CircleCI's documentation pages描述。 (我从日志中注意到JVM确实在这个设置上有所提升。) - 将一个
-mem
参数添加到SBT调用中。 - 将
concurrentRestrictions in Global += Tags.limit(Tags.Test, 1)
添加到SBT文件的顶部,以确保至少内存不会一次全部使用。
所有这些措施似乎都有所帮助,但我还没有找到这个问题的确切解决方案。
我还能做些什么来控制SBT的内存使用情况?
编辑:我们的项目有5个子项目,约有14000行Scala代码(以及我们继承的21000行Java代码)。在使用FindBugs执行静态分析时,通常(但不总是)发生内存不足:我们使用它与FindSecurityBugs插件一起查找安全问题。
您的项目有多大?你有多少行代码?你什么时候编译OOM?打包?测试阶段? – Rumoku
@rumoku好问题;我编辑了我的问题来回答他们。 – jqno
您看到的问题与其他问题不同,但它可以帮助您:http://stackoverflow.com/questions/16640823/sbt-runs-out-of-memory?rq=1 – 2rs2ts