Android: bump gradle JVM heap to 10G + cap workers to fix AAB OOM

Verbose log of yesterday's AAB build revealed:
  java.lang.OutOfMemoryError: Java heap space
    at java.util.zip.DeflaterOutputStream.write
    at com.android.zipflinger.StreamSource.<init>
    at com.android.builder.internal.packaging.AabFlinger$writeZip$1.call

AAB packaging streams compressed native libs through ByteArrayOutputStream
buffers. With universal-bundle (all 3 ABIs in one AAB) and parallel
ForkJoinPool workers all drawing from the same 6G heap, the peak exceeds
budget mid-zip. APK build doesn't hit this because per-ABI APKs are
packaged separately, much smaller per-file working set.

Two changes:
  1) org.gradle.jvmargs: -Xmx6144M → -Xmx10240M, + MaxMetaspaceSize=1024M
     (the daemon-side metaspace also creeps up over a long build).
  2) org.gradle.workers.max=2 — fewer parallel workers = lower simultaneous
     buffer footprint. Build still parallel, just gentler peak.
This commit is contained in:
jwinterm
2026-05-19 14:38:57 -04:00
parent ba5c81e78b
commit 0aa9f03f77
+6 -1
View File
@@ -1,4 +1,9 @@
org.gradle.jvmargs=-Xmx6144M
# AAB universal-bundle packaging (AabFlinger.writeZip) OOMs at 6G because
# parallel ForkJoinPool workers all share the heap while buffering compressed
# native libs. Bumped to 10G + capped worker count to flatten the peak.
# linux-beast Docker container has plenty of RAM; bump higher if needed.
org.gradle.jvmargs=-Xmx10240M -XX:MaxMetaspaceSize=1024M -Dfile.encoding=UTF-8
org.gradle.workers.max=2
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true