android java enum example




Il file JAR di Android Studio che causa il limite di sovraccarico del GC ha superato l'errore (4)

Sto utilizzando Android Studio su OS X. Ricevo questo messaggio di errore:

FAILURE: build fallito con un'eccezione.

  • Cosa non ha funzionato: esecuzione non riuscita per l'attività ': app: preDexDebug'. com.android.ide.common.internal.LoggedErrorException: Impossibile eseguire il comando: / Applicazioni / Android Studio.app/sdk/build-tools/android-4.4W/dx --dex --output / Users / alex / AndroidStudioProjects / SilentSMS / app / build / intermedi / pre-dex / debug / android-4.3_r2.1-f22bbff4d1017230e169a4844a9c2195f13060d2.jar /Users/alex/AndroidStudioProjects/SilentSMS/app/libs/android-4.3_r2.1.jar

    Codice di errore: 3 Output:

  UNEXPECTED TOP-LEVEL ERROR:
  java.lang.OutOfMemoryError: GC overhead limit exceeded
      at com.android.dx.cf.code.RopperMachine.getSources(RopperMachine.java:665)
      at com.android.dx.cf.code.RopperMachine.run(RopperMachine.java:288)
      at com.android.dx.cf.code.Simulator$SimVisitor.visitLocal(Simulator.java:612)
      at com.android.dx.cf.code.BytecodeArray.parseInstruction(BytecodeArray.java:412)
      at com.android.dx.cf.code.Simulator.simulate(Simulator.java:94)
      at com.android.dx.cf.code.Ropper.processBlock(Ropper.java:782)
      at com.android.dx.cf.code.Ropper.doit(Ropper.java:737)
      at com.android.dx.cf.code.Ropper.convert(Ropper.java:346)
      at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:282)
      at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:139)
      at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:94)
      at com.android.dx.command.dexer.Main.processClass(Main.java:682)
      at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
      at com.android.dx.command.dexer.Main.access$600(Main.java:78)
      at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
      at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
      at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
      at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
      at com.android.dx.command.dexer.Main.processOne(Main.java:596)
      at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
      at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
      at com.android.dx.command.dexer.Main.run(Main.java:230)
      at com.android.dx.command.dexer.Main.main(Main.java:199)
      at com.android.dx.command.Main.main(Main.java:103)

Sto usando questa libreria:

http://grepcode.com/snapshot/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/

Ho estratto il file JAR e l'ho aggiunto al mio progetto: il progetto che sto cercando di costruire è:

https://github.com/domi007/silentSMS/

Capisco perché i miei valori xms e xmx sono troppo bassi. Li ho aumentati in:

/ Applicazioni / Android Studio.app/bin/idea.vmoptions in modo che ora dice:

-Xms256m
-Xmx1024m

Tuttavia, ho ancora ricevuto l'errore. Da cosa potrebbe essere causato? A parte l'app silentSMS come progetto Eclipse e il porting del codice su Android Studio non ho cambiato nulla. In termini di errori di individuazione di Android Studio, non è così e tutto sembra perfetto.


Disattivo la mia esecuzione istantanea di:

Preferenze di menu → CreaEsegui istantaneo "Abilita esecuzione istantanea su codice hot swap"

Immagino che sia l'esecuzione istantanea a rallentare la creazione e crea un file pidXXX.hprof di grandi dimensioni che causa il superamento del limite di sovraccarico gc di AndroidStudio.

(Il mio dispositivo SDK è 19.)


Ho forzato la chiusura di Java.exe da taskmanger, riavviato Android Studio e ha funzionato per me


Penso che ci sia un modo separato per aumentare il limite di heap dell'operazione di dexing. Aggiungi questo alla tua chiusura android nel tuo file build.gradle :

dexOptions {
    javaMaxHeapSize "4g"
}

e vedere se questo aiuta.

(idea per gentile concessione di questa risposta di Scott Barta )


Per me non ha funzionato le risposte che ho visto qui. Ho intuito che avere la CPU estremamente impegnativa rende il computer caldo. Dopo aver chiuso i programmi che consumano grandi quantità di CPU (come Chrome) e raffreddando il mio portatile, il problema è scomparso.

Per riferimento: ho avuto la CPU sul 96% -97% e l'utilizzo della memoria oltre 2.000.000K da un processo java.exe (che in realtà era un processo relativo al gradle).