systemserver watchdog

watchdog 即看门狗,用来监测系统是否发生了死锁,无响应等问题。要定时喂狗,不及时喂狗认为此时系统发生了blcok。

android系统的核心服务都跑在systemserver进程中,为了防止核心服务hang住而发生冻屏,systemserver中引入了Watchdog机制,当出现故障时,Watchdog触发杀死systemserver进程,实现软重启进行系统自恢复。

systemserver中的watchdog监测的对象主要分为两类,一个是对象锁,一个是线程的handler:

  • Monitor Checker,用于检查AMS, PKMS, WMS等系统服务的对象锁是否有长时间被持锁情况。Monitor Checker预警我们不能长时间持有核心系统服务的对象锁,否则会阻塞很多函数的运行;

  • Looper Checker,用于检查线程的消息队列是否长时间处于工作状态。Looper Checker预警我们不能长时间的霸占消息队列,否则其他消息将得不到处理。

watchdog原理:

systemsever在启动过程中初始化watchdog,启动watchdog线程。watchdog线程周期的(30s)给注册的handler发送runnable,30s内runnable执行返回,认为正常,runnable没有得到执行,出示黄牌警告,打印back tace。如果1分钟之内未得到执行,认为发生异常,出示红牌,打印backtrack,并杀死systemserver进程。Monitor Checker原理类似,运行在公共的fg线程中,30s未得到对象锁,黄牌警告,1分钟未得到对象锁红牌罚下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值