IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:ART

共 2 篇相关文章

IT 累计浏览 54

Android Perfetto 系列 10 - Binder 调度与锁竞争

本文聚焦 Android 跨进程通信核心 Binder 的性能瓶颈诊断,提供了一套基于 Perfetto 的实用分析工作流。文章首先阐明了 Binder 的基础架构与角色,随后重点讲解如何利用 `linux.ftrace` 数据源(捕获 Binder tracepoints、调度事件及 ART Monitor Contention)进行数据采集,并给出了具体的 Trace 配置模板。分析流程分为三步:首先通过事务耗时(如 `client_dur` 和 `server_dur`)定位问题调用;若耗时在派发阶段,则需评估 Binder 线程池是否饱和或缓冲区是否耗尽;若耗时在服务端,则需进一步排查代码逻辑、I/O 等待或 Java 锁竞争(通过 `dalvik` 类别观察)。文章同时介绍了 `am trace-ipc` 和 `binder-trace` 等辅助工具,旨在帮助开发者将复杂的跨进程调用链可视化,从而更直观地定位耗时、线程池压力及锁竞争问题。

IT 累计浏览 5,582

近距离端详Android ART运行时库

这篇技术分析聚焦于Android平台从Dalvik虚拟机向ART运行时过渡的核心变革。文章从Google I/O大会的发布背景切入,指出传统Dalvik虚拟机在应对多核处理器、大内存等新硬件趋势时已显吃力,从而引出ART的诞生。 文章的核心,是将ART与Dalvik进行多维度对比。最关键的差异在于编译策略:ART采用预编译技术,在应用安装时一次性将字节码编译为本地机器码并存储,而Dalvik依赖于每次运行时的即时编译。这一改变带来了直接好处,例如性能测试显示代码执行效率可提升2到3倍,同时因减少了运行时编译开销而有助于延长设备续航。 另一个对比重点是垃圾回收机制。文章通过详实的日志对比了二者的表现:Dalvik的垃圾回收常导致数十甚至上百毫秒的停顿,引发明显的画面卡顿;而ART经过重新设计的垃圾收集器,能将这类停顿时间压缩到微秒级,卡顿现象得到极大改善。 文章也客观指出了ART的权衡之处,即首次安装或设备启动时的编译时间会变长,但这是用一次性的存储和时间成本,换取了应用运行期的长期性能收益。总体而言,这是一次为匹配现代硬件能力而进行的底层架构升级。