Piszę procedurę synchronizacji dużej liczby kontaktów z bazą danych kontaktów systemu Android. Pobieranie działa dobrze dla około 700 kontaktów, po których jestem konsekwentnie otrzymujący błąd sterty pamięci, który wywołuje nieskończoną liczbę instrukcji GC i kończy się ponowne uruchamianie telefonu. Mam problem z HTC.Android dalvikvm-heap: Zacisk docelowy GC sterty
Sprawdziłem rozmiar sterty aplikacji za pomocą narzędzia alokacji sterty z DDMS, a także wyodrębniono plik hprof przy użyciu opcji Debug.dumpHprofData. Oba dzienniki wskazywały, że rozmiar sterty wynosi około 2,4 MB.
jednak uzyskać następujące dzienniki, które wskazują, że wielkość sterty jest bardziej że 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
miałem wstawiony poniższych stwierdzeń dziennika w pętli, gdzie moje contatcs pobieranie logiki został napisany.
Log.e("Memory", "free mem =" +runtime.freeMemory());
Log.e("Memory", "total memory =" +runtime.totalMemory());
Są to początkowe i końcowe wartości rachunku drukowany
---------------------------------------------------------------
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
---------------------------------------------------------------
Oznacza to, że apperently nie ma wycieków pamięci obecne w logice synchronizację kontaktów.
Czy ktoś może dać mi znać, dlaczego wielkość sterty wzrosła (do 32.00Mb) do tego stopnia, że urządzenie ponownie się uruchamia? Jestem nowy na Androida i Javę, więc proszę bardzo łatwo:) .....
Czy można połączyć lub wkleić odpowiedni kod źródłowy? –
Pomocne będzie obejrzenie kodu. Bez względu na to, dlaczego chcesz przechowywać wszystkie kontakty w pamięci? Zwykle podczas synchronizowania kontaktów ustawia się kursor i grupuje zapytanie. Prawdopodobnie nie musisz jednocześnie przechowywać wszystkich kontaktów w pamięci. Czy coś mi brakuje? – Guy
Czy identyfikator procesu dla linii dalvikvm w dzienniku to proces? – Ifor