Watchdog

Watchdog位于Framework的services包中,運行時由SystemServer初始化,從而運行在ServerThread中。

作用

Watchdog的主要作用是監(jiān)控SystemServer中一些服務(wù)是否發(fā)生了死鎖或者長時間被Blocked住而不能正常運行。

原理

定期調(diào)用被監(jiān)控者實現(xiàn)的Monitor接口的monitor()方法,等待一定時間(目前4.2上為30s)后檢查標識符,通過標識符來檢查被監(jiān)控者是否已經(jīng)處于異常狀態(tài)。

實現(xiàn)細節(jié)

  1. Watchdog會在兩個周期內(nèi)(目前4.2上為30s)都調(diào)用被監(jiān)控者的接口,同時檢查mCompleted的標識符;只有在連續(xù)兩個周期內(nèi)都有被監(jiān)控者不能正常返回時才會觸發(fā)后續(xù)操作,否則重置狀態(tài)繼續(xù)進行下一個周期。
  2. Watchdog發(fā)現(xiàn)被監(jiān)控者處于不正常狀態(tài)之后的操作便是殺死當前進程(也就是SystemServer進程,被殺死之后會導(dǎo)致zygote自殺,再之后由init進程重新創(chuàng)建zygote重新啟動Framework)。
  3. 過程中伴隨著日志和Stack Traces的輸出和寫入,具體參見代碼。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容