Android 开发高手课
张绍文
前微信高级工程师,Tinker 负责人
52721 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
导读 (1讲)
模块一 高质量开发 (25讲)
Android 开发高手课
15
15
1.0x
00:00/00:00
登录|注册

练习Sample跑起来 | 热点问题答疑第3期

监控Inflate函数调用
锁转换机制
日志示例
atrace_enabled_tags
方案二
方案一
Crash状态下获取Java线程堆栈
优化
线程监控复杂性
监控主线程执行状态
线程分类
缺陷
监控线程创建
获取atrace日志
实现思路
功能
来源
补充篇的Sample
Sample实现
福利彩蛋
相关资料
卡顿优化
答疑时间
孙鹏飞
热点问题答疑第3期

该思维导图由 AI 生成,仅供参考

你好,我是孙鹏飞。又到了答疑的时间,今天我将围绕卡顿优化这个主题,和你探讨一下专栏第 6 期和补充篇的两个 Sample 的实现。
专栏第 6 期的 Sample 完全来自于 Facebook 的性能分析框架Profilo,主要功能是收集线上用户的 atrace 日志。关于 atrace 相信我们都比较熟悉了,平时经常使用的 systrace 工具就是封装了 atrace 命令来开启 ftrace 事件,并读取 ftrace 缓冲区生成可视化的 HTML 日志。这里多说一句,ftrace 是 Linux 下常用的内核跟踪调试工具,如果你不熟悉的话可以返回第 6 期文稿最后查看 ftrace 的介绍。Android 下的 atrace 扩展了一些自己使用的 categories 和 tag,这个 Sample 获取的就是通过 atrace 的同步事件。
Sample 的实现思路其实也很简单,有两种方案。
第一种方案:hook 掉 atrace 写日志时的一系列方法。以 Android 9.0 的代码为例写入 ftrace 日志的代码在trace-dev.cpp里,由于每个版本的代码有些区别,所以需要根据系统版本做一些区分。
第二种方案:也是 Sample 里所使用的方案,由于所有的 atrace event 写入都是通过/sys/kernel/debug/tracing/trace_marker,atrace 在初始化的时候会将该路径 fd 的值写入atrace_marker_fd全局变量中,我们可以通过 dlsym 轻易获取到这个 fd 的值。关于 trace_maker 这个文件我需要说明一下,这个文件涉及 ftrace 的一些内容,ftrace 原来是内核的事件 trace 工具,并且 ftrace 文档的开头已经写道
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了Android系统中的卡顿优化技术,重点围绕性能分析框架和线程监控展开讨论。作者介绍了利用性能分析框架收集atrace日志,并详细讨论了atrace的使用和实现思路。此外,文章提到了监控线程创建并打印出创建线程的Java方法,以及对线程监控中的一些技术细节进行了深入探讨。这些内容涉及到了性能优化和线程监控的技术细节,对于Android开发和性能优化领域的技术人员具有一定的参考价值。文章内容丰富,涵盖了实际操作和技术原理,对于想要深入了解卡顿优化技术的读者来说,是一篇值得阅读的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Android 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • Kenneth
    请问这些知识是怎么获取到的呢?总感觉获取原声资料的渠道很受限制,感谢授人以鱼,更感谢授人以渔,感谢🙏

    作者回复: 其实很多都是工作或者交流过程知道的,剩下的就是自己从点到面的学习了

    2019-04-25
    1
  • blithe
    应用层开发都没接触过这些内容,大佬,你是从做什么开始接触到这些内容,并学习的
    2019-12-12
  • eyeandroid
    通过hook atrace拿到的systrace,有cpu和其它进程的信息吗?
    2019-04-24
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部