在作者对问题的描述中,我们正在检索8个相对较小的对象,每个对象都有一个到四个微小的子对象:
以下是从服务器返回响应后堆栈的示例,一分钟后它位于org.json包或com.google.web.bindery中,我们的CPU使用率很高:
java.lang.AbstractStringBuilder append0 AbstractStringBuilder.java 143 false
java.lang.StringBuilder append StringBuilder.java 125 false
org.json.JSONStringer string JSONStringer.java 344 false
org.json.JSONStringer value JSONStringer.java 252 false
org.json.JSONObject quote JSONObject.java 713 false
com.google.web.bindery.autobean.shared.impl.StringQuoter quote StringQuoter.java 69 false
com.google.web.bindery.autobean.shared.impl.StringQuoter create StringQuoter.java 50 false
com.google.web.bindery.autobean.shared.ValueCodex$Type$13 encode ValueCodex.java 193 false
com.google.web.bindery.autobean.shared.ValueCodex encode ValueCodex.java 315 false
com.google.web.bindery.autobean.shared.impl.AutoBeanCodexImpl$ValueCoder extractSplittable AutoBeanCodexImpl.java 500 false
com.google.web.bindery.autobean.shared.impl.AbstractAutoBean setProperty AbstractAutoBean.java 277 false
com.google.web.bindery.autobean.vm.impl.ProxyAutoBean setProperty ProxyAutoBean.java 253 false
com.google.web.bindery.autobean.vm.impl.BeanPropertyContext set BeanPropertyContext.java 44 false
com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext$3 visitValueProperty AbstractRequestContext.java 910 false
com.google.web.bindery.autobean.vm.impl.ProxyAutoBean traverseProperties ProxyAutoBean.java 289 false
com.google.web.bindery.autobean.shared.impl.AbstractAutoBean traverse AbstractAutoBean.java 166 false
com.google.web.bindery.autobean.shared.impl.AbstractAutoBean accept AbstractAutoBean.java 101 false
com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext processReturnOperation AbstractRequestContext.java 879 false
com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext processReturnOperations AbstractRequestContext.java 1215 false
com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext access$600 AbstractRequestContext.java 76 false
com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext$StandardPayloadDialect processPayload AbstractRequestContext.java 347 false
com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext$5 onTransportSuccess AbstractRequestContext.java 1108 false
com.whichfestival.AndroidRequestTransport send AndroidRequestTransport.java 68 false
com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext doFire AbstractRequestContext.java 1102 false
com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext fire AbstractRequestContext.java 569 false
com.google.web.bindery.requestfactory.shared.impl.AbstractRequest fire AbstractRequest.java 54 false
com.google.web.bindery.requestfactory.shared.impl.AbstractRequest fire AbstractRequest.java 59 false
com.whichfestival.FetchTopService getEvents FetchTopService.java 99 false
com.whichfestival.FetchTopService onHandleIntent FetchTopService.java 56 false
android.app.IntentService$ServiceHandler handleMessage IntentService.java 59 false
android.os.Handler dispatchMessage Handler.java 99 false
android.os.Looper loop Looper.java 130 false
android.os.HandlerThread run HandlerThread.java 60 false
我们看到GC大约触发了25次:
11-16 22:30:28.464: D/dalvikvm(416): GC_CONCURRENT freed 930K, 51% free 3321K/6727K, external 1654K/2137K, paused 15ms+10ms
11-16 22:30:33.605: D/dalvikvm(416): GC_CONCURRENT freed 515K, 49% free 3452K/6727K, external 1654K/2137K, paused 10ms+13ms
11-16 22:30:37.554: D/dalvikvm(416): GC_CONCURRENT freed 638K, 49% free 3497K/6727K, external 1654K/2137K, paused 11ms+10ms
11-16 22:30:43.424: D/dalvikvm(416): GC_CONCURRENT freed 681K, 47% free 3572K/6727K, external 1654K/2137K, paused 6ms+9ms
需要处理大约15个小型POJO对象...非常需要帮助。绝对迫切需要解决此问题。