[error] (run-main-0) java.lang.OutOfMemoryError: GC overhead limit exceeded java.lang.OutOfMemoryError: GC overhead limit exceeded
The solution to the problem was to allocate more memory when I start SBT. To give SBT more RAM I first issue this command at the command line:
$ export SBT_OPTS="-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=2G -Xmx2G"
Then start SBT as usual:
When I do that and run a little Scala program to show me the memory usage stats, it shows that I have 1,981 MB available, which helps to confirm that this approach gives SBT more memory to work with.
Related: Lagom SBT memory settings
In a related note I just saw that this Lagom documentation page makes these recommendations about SBT memory settings:
“We recommend you increase the Maximum Metaspace size and the Thread Stack size. These values can be set using -Xss2M -XX:MaxMetaspaceSize=1024M. The exact values may depend on your hardware and your code base.”
They then suggest this command to start SBT for Lagom:
SBT_OPTS="-Xms512M -Xmx1024M -Xss2M -XX:MaxMetaspaceSize=1024M" sbt
-XX:MaxPermSize=2G was removed with Java 8. sbt will give
you a warning:
ava HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=2G; support was removed in 8.0
SBT_OPTS -Xmx512m -XX:MaxPermSize=128m
I believe Java 8 now uses native memory.