Works in local, but I get this error on bitrise.io:
Uncaught translation error: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded
Uncaught translation error: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded
2 errors; aborting
:app:transformClassesWithDexForDevDebug FAILED
You’re out of memory (RAM)
This can usually be solved by setting a couple of params for JVM/Gradle to restrict RAM usage: http://devcenter.bitrise.io/android/android-tips-and-tricks/#memory-ram-limit
If the env vars would not help, a user reported an alternative config option:
The build is successful when l add these lines to my build.gradle
file:
dexOptions {
javaMaxHeapSize "8g"
}
Alternatively we also provide virtual machines with double the RAM, but that costs double the standard price.
Let me know if you’d have any questions, and Happy Building!
I wanna add some more info, based on my own issue with gradle (proguard, dex tasks):
I have increased heap memory in gradle.properties, but it didn’t get respected.
My gradle is run in --no-daemon
mode, so it respects the env options for JVM.
Fix for me was setting this env JAVA_OPTS=-Xmx1024m -Xms256m
.
NEW LINK to Bitrise docs: Memory settings
Do also note the different env name in docs: JAVA_OPTIONS
vs mine JAVA_OPTS
. For me the first didn’t work.
Gradle 5+ decreased default heap to 512MB from 1GB
More information about Gradle and memory settings can be found here: Build Environment
Do take a note about differences between build and client.
3 Likes
@lukaskurucz This was really helpful for me - Thanks
I have added JAVA_OPTS=-Xmx1024m -Xms256m to the Bitrise Env Vars and problems related to Memory exceptions disappeared.