2012-07-10 12 views
6

Moja aplikacja na Androida ma niestandardowy AsyncTask, aby wykonać zaproszenie na odpoczynek w celu wyświetlenia listy obiektów. Używam Jacksona, aby przekonwertować moją odpowiedź na Javę i widzę około 30 wywołań kolekcji śmieci podczas mapowania Json za pomocą ObjectMapper.readValue(). Co ciekawe, jeśli wykonam to samo połączenie po raz drugi, trzeci, czwarty (wybierając przycisk odświeżania), jest tylko jedno wywołanie GC. Jakieś pomysły, dlaczego tak się dzieje podczas pierwszego połączenia za każdym razem, gdy uruchamiam aplikację na Androida?Dlaczego Android śmieci zbiera się tyle razy z Jacksons ObjectMapper?

AsyncTask.java

doInBackground() { 

HttpGet request = new HttpGet(url); 
HttpClientUtil.setJsonAccept(request); 
HttpResponse response = httpClient.execute(request); 
HttpEntity responseEntity = new BufferedHttpEntity(response.getEntity()); 

// Call that garbage collect 30+ times the first exectution 
ArrayList<MyObject> responseCollection = mapper.readValue(responseEntity.getContent(), new TypeReference<ArrayList<MyObject>>(){}); 

return responseCollection; 
} 

LogCat Wyjście

07-10 11:05:13.484: D/dalvikvm(5518): GC_CONCURRENT freed 497K, 5% free 14030K/14727K, paused 3ms+4ms 
07-10 11:05:13.484: D/dalvikvm(5518): GC_CONCURRENT freed 497K, 5% free 14030K/14727K, paused 3ms+4ms 
07-10 11:05:13.484: D/dalvikvm(5518): GC_CONCURRENT freed 497K, 5% free 14030K/14727K, paused 3ms+4ms 
... 
+1

GC na Androida jest agresywny ogólnie, to nie musi mieć nic wspólnego z Jacksonem. Więcej informacji tutaj: http://stackoverflow.com/questions/4818869/technical-details-of-android-garbage-collector –

+0

@ ChristopherPerry Więc wydaje się, że odpowiedź, proszę umieścić i zamknąć :) – Warpzit

Odpowiedz

Powiązane problemy