2012-07-10 6 views
6

Android uygulamamın, bir nesne listesi için aramayı yapmak üzere özel bir AsyncTask vardır. Cevabımı Java'ya dönüştürmek için Jackson'ı kullanıyorum ve Json'u ObjectMapper.readValue() ile eşleştirirken yaklaşık 30 çöp toplama çağrısı görüyorum. İlginçtir, eğer aynı çağrıyı ikinci, üçüncü, dördüncü kez yaparsam (bir yenileme düğmesi seçerek), sadece tek bir GC çağrısı vardır. Android Uygulamamı her başlattığımda ilk görüşmede bunun neden gerçekleştiğine dair herhangi bir fikir var mı?Neden Android çöpleri Jacksons ObjectMapper ile bu kadar çok kez toplanıyor?

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 Çıktı

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

Android'de GC, mutlaka Jackson ile ilgisi yoktur genel agresif. Daha fazla bilgi için buraya tıklayın: http://stackoverflow.com/questions/4818869/technical-details-of-android-garbage-collector –

+0

@ChristopherPerry Bu cevap gibi görünüyor, lütfen kapatın ve kapatın :) – Warpzit

cevap

İlgili konular