14

ho aggiornato ad Android 2.1 Studio ed ho ottenuto questo errore mentre sto cercando di costruire & eseguire il mio grande progetto d'impresa:Android Studio 2.1 istante java.lang.OutOfMemoryError run: limite di testa GC superato

Execution failed for task ':app:transformClassesWithDexForMyAppDebug'. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded

ho cercato attraverso il forum e disabili corsa istante, scrivere anche al mio build.gradle:

dexOptions { 
    incremental true 
    javaMaxHeapSize "6g" 
} 
... 
dependencies{ 
    compile 'com.android.support:multidex:' 
} 

Ma doasn't risolto il mio problema. ho multidex abilitato nel mio Gradle, perché ottengo l'errore senza di essa:

com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

quindi questa era la soluzione per esso, e ha funzionato prima che con le versioni precedenti di Android Studio (che lavorano anche per gli altri a la società, che utilizza Android Studio 1.4-2.0) ma non per me da quando ho aggiornato il mio Android Studio.

Qualcuno ha idea di cosa può causare il problema?

Ciò che è anche interessante è che se faccio solo il progetto non ottengo l'errore, solo se provo a eseguirlo. Qualsiasi idea è apprezzata!

EDIT 1:

Che è anche interessante, che se ricomincio il mio studio Android, rispetto alla prima esecuzione è riuscita, ma il secondo non lo è.

EDIT 2:

Se ho impostato la dimensione heap più grande (come 8-10g) che l'applicazione non compila anche a prima esecuzione.

EDIT 3:

Sembra che il problema è con istante corsa, se forzo Android Studio non usarlo (come la distribuzione a due dispositivi contemporaneamente o changeing gradle.properties come nella risposta) l'errore scompare.

+0

L'esecuzione istantanea aggiunge metodi al programma e apparentemente questo ti porta a superare il limite di 65k. Per caso aggiungi i servizi di gioco alle tue dipendenze? – EpicPandaForce

+0

Ho disabile istante eseguire nelle impostazioni come questa risposta: http://stackoverflow.com/a/36637692/3162918 – bendaf

+1

Sono stato tutto il giorno cercando di risolvere questo errore ... – Aspicas

risposta

25

Aggiungi questo al file gradle.properties.

# The Gradle daemon aims to improve the startup and execution time of Gradle. 
# When set to true the Gradle daemon is to run the build. 
org.gradle.daemon=true 

# Specifies the JVM arguments used for the daemon process. 
# The setting is particularly useful for tweaking memory settings. 
# Default value: -Xmx10248m -XX:MaxPermSize=256m 
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 

# When configured, Gradle will run in incubating parallel mode. 
# This option should only be used with decoupled projects. More details, visit 
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 
org.gradle.parallel=true 

# Enables new incubating mode that makes Gradle selective when configuring projects. 
# Only relevant projects are configured which results in faster builds for large multi-projects. 
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand 
org.gradle.configureondemand=true 

Trovato Here

E sul mio build.gradle:

.... 
    dexOptions 
     { 
       incremental false 
       javaMaxHeapSize "2048M" 
       preDexLibraries = false 
     }//end dexOptions 

.... 
+0

Sembra che il problema sia con l'esecuzione istantanea Questa impostazione è disabilitata per quanto ne so. – bendaf

+0

@bendaf L'ho letto ma non con il mio problema, perché ero Instant run disabilitato – Aspicas

+0

Quindi hai la funzione di esecuzione istantanea dopo aver modificato il tuo gradle.properties? Hai l'icona di illuminazione accanto all'icona di esecuzione? perché ho attivato le impostazioni di esecuzione immediata ma non ho :/ – bendaf

3

Step1: Modifica build.grade

defaultConfig { 
     ... 
     // Enabling multidex support. 
     multiDexEnabled true 
     } 

dependencies { 
     ... 
     compile 'com.android.support:multidex:1.0.0' 
    } 

Passo 2: Impostazione sulla classe Application

public class MyApplication extends Application { 

@Override 
public void onCreate() { 
    super.onCreate(); 
    MultiDex.install(this); 
} 

} 

Fase 3: Modificare grade.properties

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 

Funzionerà !. Grazie.

-2
defaultConfig { 
    multiDexEnabled =true 
} 

aggiungi questo alla tua build.file gradle dell'app

+0

spiega la risposta, in modo che altri possano capirlo, non solo la domanda querelata. –

+0

Avevo già attivato il multidex, come ho scritto nella mia domanda "Ho multidex abilitato nel mio gradle" ... – bendaf

Problemi correlati