Ho appena aggiornato Android Studio a 3.5 Beta 1 e sto ricevendo
Daemon in scadenza perché lo spazio heap JVM è esaurito
messaggio mentre la build è in esecuzione. Inoltre, il completamento della build richiede più tempo. Qualcuno ha idea di questo?
Ho appena aggiornato Android Studio a 3.5 Beta 1 e sto ricevendo
Daemon in scadenza perché lo spazio heap JVM è esaurito
messaggio mentre la build è in esecuzione. Inoltre, il completamento della build richiede più tempo. Qualcuno ha idea di questo?
Risposte:
Sono stato in grado di risolvere questo problema per il mio progetto React Native configurando quanto segue:
// gradle.properties
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
e
// app/build.gradle
android {
dexOptions {
javaMaxHeapSize "3g"
}
}
Questo può essere risolto aumentando la dimensione heap massima configurata per il progetto.
Tramite IDE:
Aggiungi le seguenti righe nel file gradle.properties. La dimensione della memoria inferiore può essere configurata in base alla disponibilità della RAM
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2560m
Tramite GUI:
Nelle Impostazioni, cerca "Impostazioni memoria" e aumenta la dimensione massima dell'heap IDE e la dimensione massima dell'heap del Daemon in base alla disponibilità della RAM di sistema.
La soluzione è aumentare la memoria di build di Android.
Man mano che aggiungi più moduli alla tua app, c'è un'incredibile richiesta sul sistema di build Android e le impostazioni di memoria predefinite non funzioneranno. Per evitare OutOfMemoryErrors durante le build di Android, devi rimuovere il commento dall'impostazione della memoria gradle alternativa presente in /android/gradle.properties :
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Puoi trovare gradle.properties nella cartella Android .
PS
Cosa stiamo facendo e perché aiuta?
Vorrei chiarire alcuni termini di base per comprendere l'intera faccenda.
Daemon : - Un daemon è un programma per computer che viene eseguito come processo in background, anziché essere sotto il controllo diretto di un utente interattivo.
Android Studio 2.1 abilita una nuova funzionalità: Dex In Process , che può aumentare notevolmente la velocità di build completamente pulite e migliorare le prestazioni di Instant Run.
Per sfruttare Dex In Process , è necessario modificare il file gradle.properties e aumentare la quantità di memoria allocata alla VM Gradle Daemon di 1 Gb, fino a un minimo di 2 Gb, utilizzando la proprietà org.gradle.jvmargs :
Specifica gli argomenti JVM utilizzati per il processo daemon. L'impostazione è particolarmente utile per modificare le impostazioni di memoria.
org.gradle.jvmargs=-Xmx2048m
Valore predefinito:
-Xmx10248m -XX:MaxPermSize=256m
L' allocazione di memoria predefinita della VM Gradle Daemon è 1 gigabyte, che è insufficiente per supportare dexInProcess, quindi per trarne vantaggio dovrai impostarlo su almeno 2 gigabyte.
Dex in process funziona consentendo l'esecuzione di più processi DEX all'interno di una singola VM condivisa anche con Gradle, motivo per cui è necessario allocare la memoria extra prima che possa essere abilitata: quella memoria verrà condivisa tra Gradle e più processi DEX.
Se hai aumentato javaMaxHeapSize nel tuo file build.gradle a livello di modulo oltre il valore predefinito di 1 gigabyte, dovrai aumentare corrispondentemente la memoria assegnata al Daemon Gradle.
Quando la memoria assegnata è sufficiente, Dex in Process è abilitato per impostazione predefinita, migliorando le prestazioni complessive della build e rimuovendo il sovraccarico dell'avvio di più istanze VM parallele . Il risultato è un miglioramento significativo in tutti i tempi di compilazione, comprese le build Instant Run, incrementali e complete.
Fonte: https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8in gradle.properties. Se ancora non funziona, mi dispiace, non ho idea di come risolverlo.
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8in android/gradle.propertiesfunzionato lika un fascino. Grazie!! @KailashUniyal