死机,内存问题

本文探讨了内存问题如何导致手机重启,特别是当图库加载大图片时。分析发现并非图库内存增加导致,而是system_server进程受到内存压力影响。解决方案包括限制图库加载大小,并研究了手机死机后的dump分析方法,强调了kmsg、f3log的重要性,以及在log丢失或无法定位问题时如何进一步处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内存:


问题:

图库加载70M以上图片,手机重启;

问题分析:

一直以来,内存问题到底会引起什么故障都不是很明确;按正常思路,内存不够,按adj等级删除进程就可以了,在分析图库问题时,发现手机重启;

通过ddms查看内存,发现图库内存并没增加,而且就算增加,根据oom规则图库内存超过设定大小,会自动关闭;

通过dump命令查看native内存,发现图库native也没有增加,但servicemedia内存达到立80M以上;

adj删到一定等级,有另外的机制来删除进程,当删到system_server时手机重启;

问题解决:

限制图库加载的大小;

总结:

这里主要通过图库分析下手机内存问题;手机内存泄漏不够时到底会怎么样;这里但系统几个高等级adjservice泄漏时就会重启,当进程kill,没有合理关闭硬件设备如btwifi,而进程本身容错机制就不够,会因为btwifi导致手机死机黑屏;




死机问题

1.dump,手机死机后,如果能找到口,则dump

2.dump中有kmsg信息,可以通过tracesimulator获取,我这里推荐直接用ue打开拷贝9w行左右的log信息即可,我们dump时并没有获取cpu信息,所以不能和以前featurephone一样定位bug,只能获取kmsg

3.根据kmsg的时间反推,如果有ooplog或等级为0log,则可以定位故障,如果没有也不能确定不是AP侧死机,对比串口logkmsgkmsg有时没把最后的log保存下来;所以还是要根据log等级来分析;有些log很重要但打印事等级设置很低,有些引起buglog被覆盖掉了;

4.如果分析kmsg无果,可以通过recoverf3命令查看f3logf3logQXDM的打印要多,而且对关键地方有提示;

err_exception_handler.c ExIPC: PFault 0 @ df021f0, tid=13c001

boot_trap.c Divide By Zero (sig 2, arg 2)

dog.c Dog bark timeout.

但对于死循环等打印根本看不出来;而且f3log也会有丢失的时候;

5.对于上面分析不出的问题,或者log丢失的问题,只能通过复现,或者把log发给高通来解决;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值