web-dev-qa-db-fra.com

Android Le fichier JAR Google Studio a provoqué une erreur dépassant la limite de temps système GC.

J'utilise Android Studio sur OS X. Le message d'erreur suivant s'affiche:

ECHEC: La construction a échoué avec une exception.

  • Ce qui s'est mal passé: L'exécution a échoué pour la tâche ': app: preDexDebug'. com.Android.ide.common.internal.LoggedErrorException: Échec d'exécution de la commande:/Applications/Android Studio.app/sdk/build-tools/Android-4.4W/dx --dex --output/Users/alex/AndroidStudioProjects/SilentSMS/app/build/intermediates/pre-dexed/debug/Android-4.3_r2.1-f22bbff4d1017230e169a4844a9c2195f13060d2.jar /Utilisateurs/alex/AndroidStudioProjects/SilentSMS/applibs/Android-SMS/app/libs/Android-

    Code d'erreur: 3 Sortie:

  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)

J'utilise cette bibliothèque:

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

J'ai extrait le fichier JAR et l'a ajouté à mon projet. Le projet que je tente de construire est le suivant:

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

Je comprends que c’est parce que mes valeurs xms et xmx sont trop basses. Je les ai augmentés en:

/ Applications/Android Studio.app/bin/idea.vmoptions afin qu’il indique maintenant:

-Xms256m
-Xmx1024m

Cependant, j'ai toujours l'erreur. Qu'est-ce que cela pourrait être causé? Mis à part que l'application silentSMS est un projet Eclipse et que je transfère le code sur Android Studio, je n'ai rien changé. En ce qui concerne Android Studio, repérer les erreurs - ce n’est pas le cas, et tout le reste semble aller.

197
amlwwalker

Je pense qu'il existe un moyen distinct d'augmenter la limite de tas de l'opération dexing. Ajoutez ceci à votre fermeture Android dans votre fichier build.gradle:

dexOptions {
    javaMaxHeapSize "4g"
}

et voir si cela aide.

(idée fournie par cette réponse de Scott Barta )

533
CommonsWare

Dans mon cas, augmenter le taille de tas ressemble à ceci:

Utilisation de Android Studio 1.1.0

Android {
    dexOptions {
        incremental true
        javaMaxHeapSize "2048M"
    }
}

Mettez le code ci-dessus dans votre fichier Build.gradle .

89
Dhruv Raval

Ce nouveau problème est dû à la dernière version d'Android.

Accédez au dossier racine de votre projet, ouvrez gradle.properties et ajoutez les options suivantes:

org.gradle.daemon=true

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

org.gradle.parallel=true

org.gradle.configureondemand=true

Ajoutez ensuite ces modifications dans votre fichier build.gradle:

dexOptions {
        incremental = true
        preDexLibraries = false
        javaMaxHeapSize "4g" // 2g should be also OK
}
33
gurusiv

Je désactive mon exécution instantanée par:

Menu PréférenceConstruireExécution instantanée "Activer l'exécution instantanée au code d'échange à chaud"

Je suppose que c’est l’exécution instantanée qui ralentit la construction et crée un fichier pidXXX.hprof de grande taille, ce qui entraîne le dépassement de la limite de temps système d’AndroidStudio gc.

(Le SDK de mon appareil a 19 ans.)

4
崔乐天

Ajouter ceci au fichier build.gradle

dexOptions {
   javaMaxHeapSize "2g"
}
0
Ghulam Rasool

Pour moi, aucune des réponses que j'ai trouvées ici n'a fonctionné. J'ai deviné que le fait de travailler avec le processeur rend l'ordinateur très chaud. Après avoir fermé les programmes qui consomment de grandes quantités de ressources processeur (comme Chrome) et refroidi mon ordinateur portable, le problème a disparu.

Pour référence: j'ai eu le processeur sur 96% -97% et l'utilisation de la mémoire plus de 2.000.000K par un processus Java.exe (qui était en fait un processus lié graduel).

0
olNoy

J'ai forcé tous les Java.exe à fermer du gestionnaire de tâches, puis à redémarrer Android Studio et cela a fonctionné pour moi.

 enter image description here 

0
Hitesh Sahu

J'utilise Android Studio 3.4 et la seule chose qui a fonctionné pour moi était de supprimer les lignes suivantes de mon fichier build.gradle:

minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'

Parce que Android Studio 3.4 utilise R8 dans full mode et n'est pas directement compatible avec Proguard

0
pableiros