当前位置:网站首页>Anr principle and Practice
Anr principle and Practice
2022-07-07 06:51:00 【Little xian】
Broadcast ANR Design principle
- Only in an orderly broadcast ANR Monitoring of
- AMS Responsible for distributing orderly broadcasts , And set timeout monitoring alarm during distribution , If the broadcast receiver processes the message within the timeout period and AMS If the communication is cancelled, this timeout monitoring will not happen ANR, Otherwise, it will be judged ANR.
- AMS It's used Binder The mechanism and APP Process of communication , When receiving broadcast data , Will encapsulate the data and sendMessage To the main thread message queue , Main thread processing Msg, The final call receiver.onReceive Method .( When there are time-consuming tasks in front of the message queue of the main thread , Or other processes have time-consuming tasks , Affect the scheduling of current events , It's not that the event itself takes too long , Will also trigger ANR)
Service ANR Design principle
Input ANR Design principle
ANR Dump technological process
- Filter out special scenes ( is dump, Shutting down , is crash, Being used by the system kill)
- Find what you need Dump The process of , It mainly includes ANR The parent of the process ,SystemServer process , high CPU Of ( most 5 individual ) process
- send out SIGQUIT Signal the need Dump The process of

- Processes SignalCatcher Thread collects current virtual machine information , Memory information ,class Information ,GC Information , Then suspend all threads , Get the stack information of the thread
- Finally, it's piped to SystemServer, Append write to Trace In file
Application detection ANR
- watchdog
- monitor SIGNALQUIT The signal , Determine your progress ANR When ,Java Get stack information at the end , Or reflection calls inside the virtual machine Dump Stack interface of thread , Get the data and output it to your own directory .
Implementation reference Xcrash:https://github.com/iqiyi/xCrash/blob/master/README.zh-CN.md
obtain ANR Info
- adopt ActivityManagerService.getProcessesInErrorState, Traverse mLruProcesses, And according to the current abnormal state of the process, such as crash perhaps anr type , Return to concrete ProcessErrorStateInfo
ANR The time-consuming situation in the message queue before the occurrence
- At present Trace The business where the stack is located takes a lot of time ;
- At present Trace The business where the stack is located is not time consuming , But historical scheduling has a serious time-consuming ;
- At present Trace The business where the stack is located is not time consuming , But historical scheduling has many messages that take time ;
- At present Trace The business where the stack is located is not time consuming , But there are a large number of repeated messages in historical scheduling ( Business sends messages frequently );
- At present Trace Stack business logic is not time consuming , But other threads have serious resource preemption , Such as IO,Mem,CPU;
- At present Trace Stack business logic is not time consuming , But other processes have serious resource preemption , Such as IO,Mem,CPU;
ANR Log semantic analysis
Load: 2.62 / 2.55 / 2.25
Express :1、5、15 In use and waiting for use within minutes CPU The average number of active processesCPU usage from 0ms to 1987ms later (2020-03-10 08:31:55.169 to 2020-03-10 08:32:17.156)
indicate : Load information is captured in ANR After that 0~1987ms. It also points out that ANR The timing of the :2020-03-10 08:31:55.169
If it is CPU usage xxx awake Said is ANR Previous system load information41% 2080/system_server: 28% user + 12% kernel / faults: 76445 minor 180 major 26% 9378/com.xiaomi.store: 20% user + 6.8% kernel / faults: 68408 minor 68 major
Express : Each process takes up CPU Details of66% TOTAL: 20% user + 15% kernel + 28% iowait + 0.7% irq + 0.7% softirq
Express : All processes occupy CPU Information about
ANR keyword
a. user: User mode ,kernel: Kernel mode
b. faults: Memory page missing ,minor—— Slight ,major—— severe , You need to take data from disk
c. iowait:IO Use ( wait for ) Proportion
d. irq: Hard interrupt ,softirq: Soft interrupt
e. utm: user space time,stm: kernel space time
Reference resources :
- Today's headline ANR Optimization Practice Series - Design principles and influencing factors
- Today's headline ANR Optimization Practice Series - Monitoring tools and analysis ideas
- Today's headline ANR Optimization Practice Series sharing - A collection of case studies
- Android Source code analysis four component series ( 7、 ... and )— Broadcast sending process
- ANR Analyze comprehensively
- How to analyze ANR problem
边栏推荐
- 二十岁的我4面拿到字节跳动offer,至今不敢相信
- 项目实战 五 拟合直线 获得中线
- DB2获取表信息异常:Caused by: com.ibm.db2.jcc.am.SqlException: [jcc][t4][1065][12306][4.25.13]
- Cloudcompare point pair selection
- dolphinscheduler3. X local startup
- 【NOI模拟赛】区域划分(结论,构造)
- MySQL卸载文档-Windows版
- 7天零基础能考证HCIA吗?华为认证系统学习路线分享
- Mysql---- import and export & View & Index & execution plan
- 2022/07/04学习记录
猜你喜欢

带你刷(牛客网)C语言百题(第一天)

场馆怎么做体育培训?

联合索引ABC的几种索引利用情况

MATLAB小技巧(29)多项式拟合 plotfit

Unable to debug screen program with serial port

POI export to excel: set font, color, row height adaptation, column width adaptation, lock cells, merge cells

Abnova 膜蛋白脂蛋白体技术及类别展示

企業如何進行數據治理?分享數據治理4個方面的經驗總結

BindingException 异常(报错)处理

Take you to brush (niuke.com) C language hundred questions (the first day)
随机推荐
请问 flinksql对接cdc时 如何实现计算某个字段update前后的差异 ?
MOS管参数μCox得到的一种方法
Stack and queue-p79-10 [2014 unified examination real question]
Matlab tips (29) polynomial fitting plotfit
【解决】Final app status- UNDEFINED, exitCode- 16
Leetcode T1165: 日志分析
AddressSanitizer 技术初体验
Learning notes | data Xiaobai uses dataease to make a large data screen
Basic introduction of JWT
docker-compose启动redis集群
学术报告系列(六) - Autonomous Driving on the journey to full autonomy
C interview encryption program: input plaintext by keyboard, convert it into ciphertext through encryption program and output it to the screen.
2018年江苏省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书第一阶段答案
libcurl返回curlcode说明
请教一下,监听pgsql ,怎样可以监听多个schema和table
Problems and precautions about using data pumps (expdp, impdp) to export and import large capacity tables in Oracle migration
请问如何查一篇外文文献的DOI号?
Stack and queue-p78-8 [2011 unified examination true question]
Google Chrome browser released patch 103.0.5060.114 to fix the 0-day vulnerability
String (explanation)