当前位置:网站首页>Camera-memory内存泄漏分析(二)
Camera-memory内存泄漏分析(二)
2022-06-26 03:19:00 【Cmatrix204】
通过Provider对com.android.camera2进行memory监控仅仅相当于对某一进程的memory info信息监控,当真正发生内存泄漏的情况下,单独check camera.android.camera2单独的包肯定是不能完全的check问题点的,可以通过sysinfo所对应的/proc/meminfo信息里面的MemAvailable 显示的大小进行宏观的使用情况查看,进而对怀疑的进程通过dumpsys meminfo的方式去check具体的怀疑进程,现在以Camera模块为例进行问题说明。
一、sysinfo信息确定问题时间节点
每2min打印系统meminfo 的sysinfo log,在相关问题发生的时间节点前后可以通过sysinfo的大致时间点初步确定一下meminfo的状态是否有问题。
具体追踪log如下:
先看是否有crash等造成camera崩溃的log产生
分析sysinfo相关的memAvailable,每2min之内有200M左右的memory信息波动,在一个2min的波段之内发生了800M的内存波动,这边的异常发生会导致camera crash等相关信息进而释放掉占用的内存导致大的内存变化波动。
22:52:25-22:54:26之间分析其他的main log对应的节点发现 com.android.camera OOM异常(类似报错:lowmemory)的报错信息。
二、通过dumpsys meminfo 压测定位相关进程的内存占用
对camera相关的各个进程的memory使用情况进行监控以及处理。 1.
1.通过命令dump camera应用层相关的memory
adb shell "dumpsys meminfo com.android.camera2 | awk '/Graphics|Java Heap:|Native Heap:|TOTAL PSS/' " >>meminfo.txt
2.通过命令dump camera HAL/FrameWork层相关的memory信息
adb shell ps -A | grep camera
查看camera HAL相关的内存信息
adb shell "dumpsys meminfo 504" >> meminfo_cameraprovider.txt
查看camera FrameWork层相关的内存信息
adb shell "dumpsys meminfo 726" >> meminfo_cameraserver.txt
最后对每次测试所拿到的memory Total Pss信息进行统计,绘制成相关进程连连续拍照占用memory相关的图表即可直观的观察到相关的内存消耗情况,视图如下:
展讯平台 Camera相关进程
MTK平台 Camera相关进程
总结
内存相关的异常处理起来肯定不像其他问题一样简单,需要反复的压测,确定具体的异常点,甚至需要借用addr2line -e -f 解析动态链接库,定位异常发生时的堆栈地址对应的函数接口;objdump -S -D反汇编相关的lib,确定具体的问题点; 最后如果能定位到具体的某一个内存申请的点,解决起来就会好很多。
边栏推荐
- Asynctask multiple simultaneous use methods
- Where is it safe to open a fund account?
- Non H5 end of uni app, regional setting of status bar on the top of mobile phone
- Sqlitestudio download address
- 等保备案是等保测评吗?两者是什么关系?
- JS to achieve the effect of text marquee
- redux-thunk 简单案例,优缺点和思考
- “再谈”协议
- Classic model - Nin & googlenet
- 类图
猜你喜欢
【哈希表】改进,拉链法哈希结构——直接用两个索引查找,不用每次都hash和%一遍
Using meta analysis to drive the development of educational robot
拖放
[hash table] improved, zipper hash structure - directly use two indexes to search, instead of hashing and% every time
Hardware creation principle of campus maker space
MySQL开发环境
计组笔记——CPU的指令流水
Redux thunk simple case, advantages, disadvantages and thinking
Deletelater Usage Summary in QT
面试阿里测开岗失败后,被面试官在朋友圈吐槽了......(心塞)
随机推荐
MySQL高级部分( 四: 锁机制、SQL优化 )
View of MySQL
Uni app Baidu cloud realizes OCR ID card recognition
智能制造学习记录片和书籍
Nebula Graph学习篇3_多线程完成6000w+关系数据迁移
给网站添加“开放搜索描述“以适配浏览器的“站点搜索“
MySQL开发环境
国信金太阳靠谱吗?开证券账户安全吗?
Nepal graph learning Chapter 3_ Multithreading completes 6000w+ relational data migration
拖放
[hash table] improved, zipper hash structure - directly use two indexes to search, instead of hashing and% every time
Insect structure and Deconstruction
2022.6.25-----leetcode.剑指offer.091
Uni app custom selection date 2 (September 16, 2021)
Camera-memory内存泄漏分析(三)
Preparation for wechat applet development
数字孪生智慧水务,突破海绵城市发展困境
[appium stepping pit] io appium. uiautomator2. common. exceptions. InvalidArgumentException: ‘capabilities‘ are mand
类图
经典模型——AlexNet