Android ANR日志中的“faults”是什么意思?

5

就像下面的示例一样,在每个进程中除了 cpu 使用率值之外,还有一对“faults” 值,分别是“minor” 和“major”。那么这具体意味着什么?

ANR in com.rescuetime.android
PID: 11517
Reason: Broadcast of Intent { act=android.intent.action.SCREEN_ON flg=0x50000010 }
Load: 3.35 / 5.22 / 9.91
CPU usage from 0ms to 7475ms later with 99% awake:
  97% 947/system_server: 80% user + 16% kernel / faults: 7489 minor 81 major
  0.1% 269/debuggerd: 0% user + 0% kernel / faults: 4711 minor 16 major
  7% 1493/com.android.phone: 3.3% user + 3.7% kernel / faults: 3615 minor 10 major
  6.5% 1201/com.android.systemui: 3.3% user + 3.2% kernel / faults: 3074 minor 5 major

ANR(应用程序未响应)是由于在主线程(UI 线程)中处理长时间运行的任务。如果主线程停止超过 5 秒钟。 - Rustam
1
我理解ANR的含义,但是想要解释一下ANR日志中显示的“faults”值。 - Oasis Feng
我的猜测是它正在使用内存系统计算页面错误。但我希望有更多关于此的文档资料。 - Steve Blackwell
1个回答

0

是的,次要/主要故障只是Linux内核术语中的次要/主要页面故障。它们的解释可以在互联网上找到。

Android正在从proc文件系统中读取此类数据。对于特定的pid,数据从“/proc/”+ pid +“/stats”中读取。以下是其中一个示例: /proc/24759 # cat stat 24759(t_app_installer)S 2580 2580 0 0 -1 1077952832 13620 0 177 0 40 25 0 0 20 0 15 0 44123212 1066246144 12491 4294967295 2248540160 2248562159 3202042320 3202035120 2966304256 0 4612 1 1073775864 4294967295 0 0 17 6 0 0 0 0 0 2248567976 2248568832 2249576448 3202042577 3202042653 3202042653 3202043876 0

目前,第10个值是次要故障。在这种情况下为13620。第12个是主要故障。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接