2016-03-21 5 views
0

In android Studio 1.5.1 nur durch Verschieben des Quellcodes von einem System zum anderen und auch wenn die saubere Build ist erfolgreich, aber während der Code ausgeführt wird, bekomme ich diese Art von FehlerOutOfMemoryError: GC Overhead Limit überschritten Android

java.lang.OutOfMemoryError: GC overhead limit exceeded Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-openjdk-amd64/bin/java'' finished with non-zero exit value 3

ich habe den Code unten in app.gradle auch:

dexOptions { 
     javaMaxHeapSize "4g" 
} 
+0

Ist Ihr JVM 64 Bit? Wenn ja, können Sie nicht mehr als 1,7 GB Heap erhalten. – duffymo

Antwort

1

GC overhead limit exceeded bedeutet, dass Ihre App alle Heap und Garbage Collector reinigen kann nicht genug Platz, um das Programm auszuführen besetzt.

So ist es zu viel notwendigen Daten im Speicher oder Speicherverlust (dh Referenzen, die von App Root zugegriffen werden kann, aber nicht mehr benötigt wird) besteht in der Anwendung - nur weitere Profilierung App Sie weitere Details geben können

0

Die Detailmeldung zeigt an, dass der Garbage Collector die ganze Zeit ausgeführt wird und das Java-Programm einen sehr langsamen Fortschritt macht. Nach einer Garbage-Collection, wenn der Java-Prozess mehr als etwa 98% seiner Zeit damit zubringt, Garbage Collection durchzuführen und wenn er weniger als 2% des Heapspeichers wiederherstellt und bislang die letzten 5 (Kompilierzeitkonstante) aufeinanderfolgenden Garbage-Vorgänge ausgeführt hat Sammlungen, dann wird ein java.lang.OutOfMemoryError geworfen. Diese Ausnahme wird normalerweise ausgelöst, da die Anzahl der Live-Daten kaum in den Java-Heapspeicher passt und wenig Speicherplatz für neue Zuordnungen enthält. Aktion: Erhöhen Sie die Größe des Heapspeichers. Die java.lang.OutOfMemoryError-Ausnahme für überschrittenes GC Overhead-Limit kann mit dem Befehlszeilen-Flag -XX: -UseGCOverheadLimit deaktiviert werden.

Dies wurde von Oracle Java Dokumentation genommen

0

Sie können von Ihrem reservierten Speicher für die App erhöhen

android:largeHeap="true" 

zu Ihrer Manifest-Datei hinzufügen und sehen, ob es Ihr Problem löst. Sie sollten jedoch in Ihrer App nach Speicherlecks suchen, da OutOfMemoryError normalerweise eine Konsequenz einer fehlerhaften Speicherverwaltung ist.