我們在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