-
-
Save kkismd/58bfe83d28268fe8d4d0 to your computer and use it in GitHub Desktop.
stb testのリークとフォーク
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
kkismd 31 minutes前 | |
コードを直しながらsbt shellの中でtestを繰り返し実行していると、そのうち | |
java.lang.OutOfMemoryError: PermGen space | |
が出て落ちることが多いのですが、これはクラスローダーまわりになにかリークが起こってるんでしょうか? | |
xuwei-k 30 minutes前 | |
はい | |
(もしメモリの設定を変えてなかったら)設定を増やしましょう | |
あとは、コンパイルじゃなくtestのほうが原因なら、testは必ずforkして実行するとか | |
ClassLoaderリークするから、一定時間ごとに裏で強制GCしてみようぜ、的な話(つらい sbt/sbt#1773 sbt/sbt#1223 | |
Saisse 26 minutes前 | |
あんまり直す気はなんですかね? | |
kkismd 24 minutes前 | |
メモリの設定でちょっと増やしてみて、あまり変わらなかったので質問してみました | |
-XX:MaxPermSize=1024M | |
xuwei-k 21 minutes前 | |
直そうとしても根本的に難しすぎて苦戦してる感じじゃないんですかね? | |
testのforkは設定してます?あとJava7と8によっても違うので | |
kkismd 17 minutes前 | |
fork in Test := true としたら | |
[error] Could not create an instance of services.xxxx.XxxxxSpec | |
[error] caused by java.lang.Exception: Could not instantiate class services.xxxx.XxxxxSpec: null | |
[error] org.specs2.reflect.Classes$class.tryToCreateObjectEither(Classes.scala:93) | |
なにがまずいんだろう | |
xuwei-k 14 minutes前 | |
テストclass内のトップレベルで -D のJVMの変数を読み込むようなコード書いてて、XxxxSpecのインスタンス生成時に読み込めずnullになって失敗?(forkすると、設定変えないと -D の変数は読み込めなくなる) | |
kkismd 9 minutes前 | |
あー、たぶんどこかで設定値を読み込んでます。 | |
値の取り込みかたを全体的に見直した方がいいのかもしれないですね。 | |
xuwei-k 5 minutes前 | |
別に全体的に変えなくても、とりあえずそのまま動かしたいなら、sbtのビルドファイル上で javaOptions in Test を設定すればいいので | |
kkismd 4 minutes前 | |
なるほどです | |
xuwei-k 4 minutes前 | |
そこに適当に設定するか scala.sys.process.javaVmArguments あたりから、そのまま全部引き渡す or 必要な物だけ引き渡す、などをすれば | |
いずれにせよ、メモリの設定を javaOptions in Test のほうにもやらないとかなり簡単に死ぬので設定したほうがいいです | |
kkismd a few seconds前 | |
ありがとうございます。いろいろ分かってなかったことが教えてもらって理解できました。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment