मेरे एंड्रॉइड ऐप में ऑब्जेक्ट्स की सूची के लिए एक बाकी कॉल करने के लिए एक कस्टम AsyncTask है। मैं जावा में अपनी प्रतिक्रिया को बदलने के लिए जैक्सन का उपयोग कर रहा हूं और ऑब्जेक्टमैपर.readValue() के माध्यम से जेसन मैप करते समय मैं लगभग 30 कचरा संग्रह कॉल देख रहा हूं। दिलचस्प बात यह है कि, यदि मैं एक ही कॉल करता हूं तो दूसरा, तीसरा, चौथा समय (रीफ्रेश बटन चुनकर), केवल एक ही जीसी कॉल होता है। हर बार जब मैं अपना एंड्रॉइड ऐप शुरू करता हूं तो पहली बार कॉल पर यह क्यों हो रहा है?एंड्रॉइड कचरा जैकसन ऑब्जेक्टमैपर के साथ इतनी बार क्यों एकत्र करता है?
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 आउटपुट
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
...
Android पर जीसी समग्र आक्रामक है, यह जरूरी जैक्सन से कोई लेना देना नहीं है। यहां अधिक जानकारी: http://stackoverflow.com/questions/4818869/technical-details-of-android-garbage-collector –
@ क्रिस्टोफर पेरी तो ऐसा लगता है कि उत्तर की तरह, कृपया इसे अंदर और बंद करें :) – Warpzit