2012-07-10 14 views
6

La mia app Android ha un AsyncTask personalizzato per effettuare una chiamata di riposo per un elenco di oggetti. Sto usando Jackson per convertire la mia risposta in Java e sto vedendo circa 30 chiamate di garbage collection durante il mapping di Json tramite ObjectMapper.readValue(). È interessante notare che se faccio la stessa chiamata una seconda, terza, quarta volta (selezionando un pulsante di aggiornamento), c'è solo una singola chiamata GC. Qualche idea sul perché questo sta accadendo alla prima chiamata ogni volta che avvio la mia app per Android?Perché i rifiuti di Android vengono raccolti così tante volte con ObjectMapper di Jacksons?

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 uscita

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

Il GC su Android è aggressivo nel complesso, non ha necessariamente a che fare con Jackson. Maggiori informazioni qui: http://stackoverflow.com/questions/4818869/technical-details-of-android-garbage-collector –

+0

@ChristopherPerry Così sembra la risposta, per favore mettila dentro e chiudi :) – Warpzit

risposta

Problemi correlati