1.atrace -b 15000 sched irq video -o /data/local/tmp/trace1
video category对应的VFRAME_INPUT能直观的看到在丢帧时会出现明显的滑坡。那么就需要把注意力放到这一段cpu的时间片分布情况。
2.对比正常版本的时间片分布,发现SystemServer内部的IpClient.eth0和HeapTaskDaemon线程占据了大部分时间片。
①丢帧平台
②正常平台
3.IpClient.eth0线程在丢帧时间占用了大量的时间片,HTTPREQUEST_MAN线程时Netflix网络请求下载数据的线程,虽然它也占用了不少的时间片,但是能看到大部分的时间都是Runnable的状态,说明它想要得到时间片下载数据但是得不到cpu及时的响应。
①IpClient.eth0线程时间片分布,结合时间片分布规律可以认为HeapTaskDaemon线程做gc也是因为这个线程频繁创建和释放大量占用内存的对象。