sbt v1.3.8ではfork設定をしていないとテンポラリディレクトリがクリーンアップされないバグがあるようです
問題
sbt testを動かすたびに/tmp
にsbt_7ab6d679/
のようなディレクトリが作られて,
その中にjarが展開されて,
testが終わっても/tmp
のディレクトリがクリーンアップされないためメモリを大量に使うようになっていました.
またsbt run
で起動したwebサーバがrunを終了させてもポートを解放してくれなかったため,
一々sbtを終了する必要があります.
原因
sbtにプロジェクトを移したらアプリケーションがOutOfMemoryErrorを吐くようになった時の対処法 - ncaq
で一度JVMをforkすることにしたのですが,
本当はforkはJVMを一々起動して起動が遅いのとJITが最初からになってしまうという理由でやりたくなくて,
メモリ不足は.jvmopts
で解決出来るのでfork設定を無効化しました.
しかしforkしないとクリーンアップされないバグがあるようです.
Background jobs by eatkins · Pull Request #5259 · sbt/sbt で治ったように見えるのですが, 実際には治っていません. まだリリースされてないということなのですかね?
https://github.com/sbt/sbt/commits/v1.3.8 を見ても確かにまだ取り込まれてないように見えます.
とりあえずfork設定を復活させました.