![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android稳定性
文章平均质量分 82
MrPeng1991
这个作者很懒,什么都没留下…
展开
-
一个死锁的案例
但是实际上,这个第二次的 log 意义并不大,因为这个时候系统 ANR,需要检查的是系统为什么出现 ANR,也就是说第一次 traces 的log 可能在后面的 debug 中起到关键因素。是在 startService() 的时候占用了AMS 这把锁,但是后面又在等 PermissionDialogReqQueue 的锁,这个锁是自己锁上的并没有放出来,导致了一连串的死锁。同样的,根据上面第 1.5 点,来看下 AMS 中的Handler 也触发了 WatchDog。原创 2024-07-09 01:13:49 · 172 阅读 · 1 评论 -
ANR日志输出
总结一下上面代码,这段代码并没有真正的执行dump操作,只是确定了trace文件路径,如果”dalvik.vm.stack-trace-dir”这个属性没有配置,就使用旧的dump策略,trace信息写入到全局trace文件/data/anr/traces.txt中,删除旧的traces文件,创建新的traces文件;5. 我们需要通过源码可以发现,当发生的是后台进程ANR,会少收集很多的信息,比如CPU使用率,CPU占比较高的5个应用,NATIVE进程情况。,此时需要结合eventlog进一步分析。原创 2024-07-09 00:45:19 · 760 阅读 · 0 评论 -
稳定性四—NE流程及分析方法
TODOTODOTODOTODOTODO。原创 2024-07-04 23:43:15 · 409 阅读 · 0 评论 -
perfetto详解
可以将Perfetto理解为systrace的升级版,用在更新的平台、新图表展示更多的信息。它可帮助开发者收集 Android 关键子系统(如SurfaceFlinger/SystemServer/Input/Display 等 Framework 部分关键模块、服务,View系统等)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。原创 2024-03-16 21:24:53 · 958 阅读 · 0 评论 -
快稳省工具总结
ftrace、原创 2024-03-16 21:21:42 · 340 阅读 · 0 评论 -
稳定性三——wachdog机制与分析方法
最早引入Watchdog是在单片机系统中,由于单片机的工作环境容易受到外界磁场的干扰,导致程序“跑飞”,造成整个系统无法正常工作,因此,引入了一个“看门狗”,对单片机的运行状态进行实时监测,针对运行故障做一些保护处理,譬如让系统重启。这种Watchdog属于硬件层面,必须有硬件电路的支持。Linux也引入了Watchdog,在Linux内核下,当Watchdog启动后,便设定了一个定时器,如果在超时时间内没有对/dev/Watchdog进行写操作,则会导致系统重启。原创 2024-03-10 22:35:09 · 1091 阅读 · 0 评论 -
稳定性二——JE流程
1.1LoggingHandlerUncaughtExceptionHandler只定义了一个接口方法 当线程因为未捕获的异常停止时,Java 虚拟机会调用 uncaughtException() 函数。可以看出,uncaughtException() 是在crash 最开始调用的,用以输出crash 开头信息1.3 KillApplicationHandlerKillApplicationHandler 类,以及构造中传入的LoggingHandler,都是实现UncaughtExceptio原创 2024-01-21 22:43:12 · 856 阅读 · 0 评论 -
稳定性一——ANR
如果有发现某个线程的堆栈,包含此字样,可进一步看其堆栈,确定是调用了什么系统服务。main log可以得到anr基本信息,要得到阻塞的地方,还得靠trace文件,一般在/data/anr目录下,可在找个trace文件中搜索主线程堆栈。可知80这个等级是很严重的,应用马上就要被杀死,被杀死的这个应用从名字可以看出来是桌面,连桌面都快要被杀死,那普通应用能好到哪里去呢?可以从log中看到,发生anr的时候,Top进程的Cpu占用情况,user代表是用户空间,kernel是内核空间,一般的有如下的规。原创 2023-10-27 00:51:23 · 414 阅读 · 0 评论