在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

专访刘刚:360 手机卫士的性能监控与优化

  • 2016-08-09
  • 本文字数:1804 字

    阅读完需:约 6 分钟

作为一款移动端产品,除了要保证安全性之外,手机卫士还需要考虑尽量减少对手机资源的消耗,而要做到这些,360 手机卫士对于自身的性能优化、性能监控,以及对不同产品的适配问题,有哪些改进之处值得我们借鉴呢?

2016 年 8 月 18-19 日,由极客邦、InfoQ 和听云联合主办的 APMCon2016 中国应用性能管理大会将在北京举行(现在报名,享8 折优惠),聚焦当前最为关键的移动端、Web 端和Server 端的性能监控和管理技术。

本届大会,我们有幸邀请到了360 手机卫士高级技术经理 刘刚,前来分享《手机卫士之性能演进历程》的内容,会详细地介绍Android 端手机卫士的性能优化之路,如何做到对系统故障的预防、监控、诊断、响应等技术细节。

InfoQ:360 手机卫士的性能优化经历了哪几个阶段?

刘刚:我大概是在 2013 年 10 月来到手机卫士,经历了手机卫士优化的 3 个阶段:

第一个阶段主要是插件化和拆分进程,这个阶段主要的目的是解决方法数和内存的问题。

第二个阶段功能模块插件化,这个阶段的目的解决两件事:

  1. 解决卡慢问题,因为代码模块化解耦后,主程序的代码(核心 dex)减少,并且经过一定优化后,比所有竞品 APK 体积小,运行内存小;
  2. 功能模块独立,用户可以按需下载,独立升级;

第三个阶段主要是性能监控常态化,这个阶段主要是通过 AOP 的手段,进行实时监控,持续对内存、启动速度、电量、流量等优化。

InfoQ:对于手机卫士这种产品,在性能上有哪些优化点?

刘刚:手机卫士产品作为最常用的移动端产品,和其他移动端产品最大的区别是在非主动使用的情况下,在保证用户手机安全性的同时,要求我们在后台进程对于系统的影响做到最小,所以对于后台进程要做到占用更小的内存,更高效的执行速度,使用非轮询方式等。

InfoQ:对于代码检测,你们使用了哪些工具,是否自己开发了相关的工具?

刘刚:对于代码检查,我们使用 Lint、findbugs 和我们 360 自己独有的代码红线工具,其中 findbugs 我们进行了定制化的修改,添加了检测器,主要检查流关闭问题。

InfoQ:我看到你们使用 AOP 实现静态埋点,为什么使用这种技术?

刘刚:其实 AOP 和无痕埋点我们都有,我们 AOP 主要是做流量、电量等一些监控,这种不存在兼容性的适配问题,无痕埋点这种我们主要是用于启动速度,内存等一些监控,我们是根据监控的对象进行了不同的选型。

InfoQ:静态埋点如何保证最少资源消耗,如何做可扩展?

刘刚:我们使用静态埋点是采样的机制,有云控的开关和有效的监控期,另外在静态埋点处我们只是做了一个异步采样机制,并没有其他执行代码,这样基本上能保证较少的资源消耗,因为静态埋点的机制决定了,扩展性是相对较弱的,我们是通过预埋一些桩,在 AOP 里加了一些动态化的监控机制,通过下发插件或者云控指令的方式进行了一定程度的扩展。

InfoQ:对于实时的性能监控,你们有哪些手段?

刘刚:主要对于进程的冷热启动、Activity 等四大组件的加载时间、线程和 task 的卡慢和内存监控、启动次数,具体的实现方式和原理都会在 APMCon2016 上进行分享。

InfoQ:对于移动应用的性能问题定义了哪些指标?

刘刚:移动端的设备性能差别非常大,性能指标和机型、ROM 相关性特别大,像内存指标不同 ROM、机型上的差异很大,所以定义性能指标时一定和机型进行参考,我们的性能指标主要是包含内存、冷热启动时间、四大组件的加载时间、流量、电量等。

InfoQ:我看到你们使用了插件化技术,对于插件的性能监控和修复,与一般的应用相比有哪些特殊的地方?

刘刚:我们的插件都具有独立的可升级能力,修复只要利用插件升级即可,像热修复对于插件意义没有那么大。另外我们手机卫士的插件都是通过我们自己的编译后台生成的,具备所有的静态 AOP 和动态监控能力,和我们主程序没有什么特殊的地方。

InfoQ:在 8 月份的 APMCon2016 大会上,您将现场分享《手机卫士之性能演进历程》内容,具体会讲那些技术点呢?参会者能有哪些收益?

刘刚:会详细描述我们手机卫士的性能演进的过程,遇到的问题,解决方法以及对应的代码实现,主要包含代码检测、自动化分析、资源优化、实时性能监控、内存分析、磁盘分析以及动态热修复等技术点,相信大家还是有感兴趣的点。

InfoQ:感谢刘老师接受我们的采访,期待您在 APMCon 上的精彩演讲。

关于受访嘉宾

刘刚,360 手机卫士高级技术经理。360 无线技术委员会委员,手机卫士开发 leader,有着 16 年开发经验,有着丰富的客户端 / 服务器端 / 无线端的开发经验,对于新技术仍然保持着强烈好奇心。

2016-08-09 03:167101
用户头像

发布了 164 篇内容, 共 118.8 次阅读, 收获喜欢 392 次。

关注

评论

发布
暂无评论
发现更多内容

jd 商品评论Api接口 全解析指南

代码忍者

个人评论 JD

当AI智能体通过稳定币自主交易和结算,如何利好DeCloud?

PowerVerse

AI 加密 去中心化 稳定币 DeCloud

英特尔持续推进核心制程和先进封装技术创新,分享最新进展

E科讯

《算法导论(第4版)》阅读笔记:p11-p13

codists

算法

提升研发运维效能:Pacvue 泊客电商的 GenAI 技术实践

亚马逊云科技 (Amazon Web Services)

HTTP接口数据也能定时同步入湖?用DolphinScheduler×SeaTunnel快速搞定!

白鲸开源

大数据 开源 Apache DolphinScheduler 任务调度

Mint Blockchain 与 Chainlink 达成战略合作:赋能跨链创新

NFT Research

blockchain web3

DApp开发:开启去中心化应用新时代

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

YashanDB|使用 Kettle 同步 PostgreSQL 数据时报错:pg_hba.conf 无法识别连接?

数据库砖家

数据库

YashanDB|select 0.00 的返回类型居然变了?警惕 JDBC 下的类型映射差异!

数据库砖家

数据库

自研时序大模型讲解(4月29日)直播回顾

Apache IoTDB

最新版LangChain4j发布!终于修复了这个恶心的问题

王磊

YashanDB 知识库|MySQL 的 GROUP BY 语句迁移到崖山时报错?原来是这个规范不同!

数据库砖家

数据库

英特尔以系统级代工模式促进生态协同,助力客户创新

E科讯

YashanDB 知识库|如何判断表空间是否启用了加密?

数据库砖家

数据库

YashanDB|UNDO 表空间持续增长怎么处理?一文教你排查+优化

数据库砖家

数据库

YashanDB|崖山共享集群(YAC):从怀疑到认可,技术细节决定产品成色

数据库砖家

数据库

DeFi开发系统软件开发:技术架构与生态重构

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

AI 大赛丨总奖池 50 万元!「1000 AIdea 应用计划」等你来战!

RTE开发者社区

智源研究院发布开源中文互联网语料库CCI 4.0 新增高质量英文数据与合成数据

智源研究院

智源研究院发布开源中文互联网语料库CCI 4.0 新增高质量英文数据与合成数据

智源研究院

YashanDB 知识库|MySQL 迁移后 CHAR 字段多出空格?问题可能出在这里

数据库砖家

数据库

公链钱包开发:技术逻辑与产品设计实践

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 代币开发 交易所开发公链开发

【AI】DeepWiki 页面转换成 Markdown 保存 - Chrome 扩展

非晓为骁

chrome AI DeepWiki Extension

Java 字符串拼接性能实测:基于 JMH 的微基准测试

歆晨技术笔记

探索如何提升自动化测试的效率--代码评审和脚本生成

夏兮。

AI 自动化测试 端到端测试新范式

黑龙江密码测评你需要知道的基本知识

黑龙江陆陆信息测评部

LED虚拟生产:革新影视制作的新技术

Dylan

虚拟 LED LED display LED显示屏 LED屏幕

区块链内容创作全攻略:海报、白皮书与视频的视觉化革命

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

Arthas jad(字节码文件反编译成源代码 )

刘大猫

监控 Arthas 监控工具 jad 字节码文件

YashanDB|Kettle 同步大表报错 “无法创建 Java 虚拟机”?别忘了调整内存

数据库砖家

数据库

专访刘刚:360手机卫士的性能监控与优化_后端_徐川_InfoQ精选文章