• 作成:

sbt v1.3.8ではfork設定をしていないとテンポラリディレクトリがクリーンアップされないバグがあるようです

問題

sbt testを動かすたびに/tmpsbt_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設定を復活させました.