背景
前几日分析遇到一个客户问题:客户长时间Monkey 煲机,发现一个叫media.metrics进程,该进程的内存一直增长到160+M左右后才稳定。所以简单分析了下该进程。
codePath
/frameworks/av/services/mediaanalytics/
/frameworks/av/media/libmediametrics/
使用方法
module → MediaAnalyticsItem → media.metrics server
用法step:
- module 可通过new MediaAnalyticsItem 对象,然后通过setInt32/setCString等接口向MediaAnalyticsItem对象中保存信息
- module通过MediaAnalyticsItem 对象的selfrecord函数,跨进程到media.metrics server的 submit接口保存该Item对象信息。
- media.metrics server保存信息可以根据保存的时长和Item的个数进行可配置。目前。原生没有设置Item个数限制,设置了保存时长的限制,能保存36h的信息。超过36h的Item会进行删除。
- 目前可保存的uid包含:MEDIA、MEDIA_CODEC、MEDIA_EX、MEDIA_DRM
最后保存的信息可以动态Dump查看:
adb shell dumpsys media.metrics option
option选项如下:
1 -clear 清除所有的Item
2 -only x 传入需要dump的组件name,如nuplayer
3 -since x 据时间进行dump,单位ms
4 -help help信息
经过内部实验:使用ATE 频繁切换Multimedia文件,media.metrics进程的内存就会突增。简单换算下,36H不停的保存信息,极有可能达到160+M左右。且该进程内存无上限限制。