Reputation: 10152
I'm using Android Studio 3.4 (Canary 9), when I build my app, it failed with the following error
Task :app:transformClassesAndResourcesWithR8ForDebug
R8 is an experimental feature. If you experience any issues, please file a bug at https://issuetracker.google.com, using 'Shrinker (R8)' as component name. You can disable R8 by updating gradle.properties with 'android.enableR8=false'.
AGPBI: {"kind":"warning","text":"Missing class: java.lang.instrument.ClassFileTransformer","sources":[{}],"tool":"D8"}
Task :app:transformClassesAndResourcesWithR8ForDebug FAILED
FAILURE: Build failed with an exception.
- What went wrong: Execution failed for task ':app:transformClassesAndResourcesWithR8ForDebug'.
GC overhead limit exceeded
When I disable R8 by putting android.enableR8=false
into gradle.properties. Everything is working fine.
So how can I fix this error without disable R8 Shrinker? Because I'm really want to test functionality of R8.
Upvotes: 33
Views: 18286
Reputation: 741
Sometimes adding JVM heap memory does not solve the problem especially on systems that have limited memory, it will cause other problems. my recommendation is to try replacing the Garbage Collector.
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC
GC overhead limit exceeded is an exception throw by default java 8 garbage collector (Parallel). In my case, it solved the problems.
Upvotes: 2
Reputation: 15012
As you said you are not using any custom JVM args
, try it out.
In your gradle.properties
file try several values for memory settings. For example try to set
org.gradle.jvmargs=-Xmx4096m
As suggested by the commented section:
Specifies the JVM arguments used for the daemon process.
The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
I've used R8 in my project and all worked fine.
Upvotes: 51