• 作成:

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設定を復活させました.