I'm updating some code from 2.9.1 to 2.10.0 (and I tried 2.10.1 with the same results), using SBT 0.12.1 in both cases.
When I run sbt clean compile
on the command line, they both complete after about 250 seconds.
However, when I run sbt
interactively, and repeatedly enter clean
then compile
, my 2.9 compiles get faster, but my 2.10 compiles get 10x slower.
If I use a heap size of 768m, 2.10 runs out of memory on the 3rd compile. With a heap size of 4g, it's able to compile each time, but always 10x slower after the first iteration.
[success] Total time: 258 s, completed Mar 14, 2013 10:44:34 AM
[success] Total time: 2048 s, completed Mar 14, 2013 11:23:03 AM
[success] Total time: 2049 s, completed Mar 14, 2013 11:58:42 AM
[success] Total time: 2047 s, completed Mar 14, 2013 12:43:19 PM
What is the best way for me to debug to find out what's going on?
Thank you retronym for the CodeCache link. I initially dismissed it, since using its suggested -XX:+UseCodeCacheFlushing
option made no improvements, but I just tried using -XX:ReservedCodeCacheSize=2g
and that solved the problem.
Does anyone know why -XX:+UseCodeCacheFlushing
doesn't help, or some recommended values for all of the code cache java options?
For fun, here are my resulting compile times using -XX:+HeapDumpOnOutOfMemoryError -server -XX:ReservedCodeCacheSize=2g -Xmx4g -Xss4M -XX:MaxPermSize=512M -XX:+DoEscapeAnalysis -XX:+UseCompressedOops -XX:+CMSClassUnloadingEnabled -XX:+UseCodeCacheFlushing
2.10.1 (interactive, repeating clean/compile)
194 s
149 s
95 s
87 s
84 s
2.9.1 (interactive, repeating clean/compile)
187 s
129 s
83 s
77 s
74 s
2.10.1 (batch sbt clean compile)
195 s
2.9.1 (batch sbt clean compile)
177 s
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With