Android-dalvikvm-heap: Klemm-target-GC-heap

Ich Schreibe eine Prozedur zum synchronisieren große Anzahl von Kontakten mit dem Android-Kontakte-Datenbank. Das herunterladen funktioniert gut für etwa 700 Kontakte nach dem ich bin consistantly immer ein Speicher-heap-Fehler, die Anrufe unendliche Anzahl von GC-Anweisung und endet das Re-Booten des Telefons. Ich bin mit dem problem auf HTC desire.

Habe ich überprüft, die heap-Größe der Anwendung, die mit Hilfe der Heap-alocation-tool von DDMS sowie extrahiert die hprof-Datei mit Debug.dumpHprofData. Die Protokolle zeigten, dass die Heap-Größe von 2,4 MB.

Aber ich bekomme folgende logs, die zeigt, dass die heap-Größe mehr, die 32.MB

dalvikvm-heap(92): Clamp target GC heap from 33.999MB to 32.000MB
dalvikvm(92): GC_FOR_MALLOC freed 2 objects / 48 bytes in 313ms

Hatte ich eingefügt folgenden log-Anweisungen in der Schleife, wo meine contatcs herunterladen Logik geschrieben wurde.

Log.e("Memory", "free mem =" +runtime.freeMemory());
Log.e("Memory", "total memory =" +runtime.totalMemory());

Diese sind die ersten und letzten Werte der aufgedruckte

---------------------------------------------------------------
11-11 12:56:04.168: ERROR/Memory(25132): free mem =871248
11-11 12:56:04.168: ERROR/Memory(25132): total memory =4202464

---------------------------------------------------------------

11-11 13:01:55.408: ERROR/Memory(25132): free mem =891640
11-11 13:01:55.408: ERROR/Memory(25132): total memory =4726752

---------------------------------------------------------------

Dies zeigt, dass apperently gibt es keine Speicherverluste vorhanden in der Synchronisierung von Kontakten Logik.

Kann jemand bitte lassen Sie mich wissen, warum ist die heap-Größe erhöht (bis zu 32.00 Mb) zu einem solchen Ausmaß, dass das Gerät neu bootet selbst? Ich bin neu in Android und Java, so gehen Sie bitte einfach auf mich :).....

  • Kannst du link oder fügen Sie den entsprechenden Quellcode?
  • Sehen etwas code helfen. Unabhängig davon - warum würden Sie brauchen, um zu speichern Sie alle Kontakte im Speicher? In der Regel, wenn die Synchronisation der Kontakte legt man ein cursor und Chargen der Abfrage. Sie wahrscheinlich nicht brauchen, um alle Kontakte im Speicher auf einmal. Bin ich etwas fehlt?
  • Ist die Prozess-id für die dalvikvm Zeilen in der log Ihre proccess?
  • did u find keine Lösung/Erklärung? es wäre nützlich, wenn Sie teilen können..
  • was verstehen wir unter Clamp-target-GC-heap von 33.999 MB zu 32.000 MB
InformationsquelleAutor Manish Khot | 2010-11-11
Schreibe einen Kommentar