服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

日活超3.6亿的快手告诉我们什么叫真正的性能优化天花板

日期: 来源:鸿洋收集编辑:

内存优化是我们app性能优化最重要的一步。尤其是目前横行的音视频软件,内存要求极高。崩溃、内存溢出(OOM)、应用无响应(ANR)、卡顿层出不穷。


这就让我们看看国内日活用户超3.6亿的音视频软件快手,是如何解决此类问题,它告诉我们了什么才是APP使用体验的门面



所谓的内存优化,音视频软件基本都是从JavaC这两部分着手处理。

Java部分

快手研发了一套线上裁剪、分析、上传用户本地镜像的方案,可以做到用户内存不足时,快速而准确地上报当时的 Java 内存状态,初步可以判断出来泄露和内存大户是谁。上报后会对所有用户的信息做汇总、展示。Java 部分的内存监控主要做了以下几点:
  • 内存镜像转储,快手研发了一种高效 dump 方案,解决了传统方法虚拟机内存转储需要暂停虚拟机的问题。


  • 内存镜像分析,研发了基于 shark 的低内存开销、低 CPU 开销的独立进程解析方案,采用了更为节省内存的高性能数据结构以及更为高效的内存索引,增加了同类型对象阈值用于 GC  Root 最短路径搜索剪枝,可以在手机侧 10 分钟内完成 400M 镜像、200 万 对象的极端 case 解析。

  • 内存镜像裁剪,快手研发了一种 hook 虚拟机内存镜像转储时 IO 的高效裁剪方案,解决了传统裁剪效率低、成功率低的问题,辅以 zstd 压缩,90% 内存镜像可以压缩至 80M 内。
C 部分
快手主要利用编译器插桩及 malloc hook 记录所有活着的内存块,利用 mark-and-sweep 算法在单独的进程中分析测试应用进程 Native Heap 中不可达的内存块。将发现的不可达内存上报后台。具体操作如下:
  • 利用编译器插桩及 malloc hook 记录所有活着的内存块(包含内存块地址、backtrace 信息),对性能影响较小。


  • 利用 mark-and-sweep 算法在单独的进程中分析测试应用进程 Native Heap 中不可达的内存块(包含内存块地址)。


  • 对于步骤 2 中收集到的不可达内存块,从 1 中获取其对应的 backtrace 信息,将泄漏信息上报至 APM 监控平台。


  • APM 监控平台解析泄漏信息(backtrace 信息符号化等),做友好的展示,业务方根据 APM 展示信息可快速定位泄漏问题。

如何真正掌握内存优化


常用的内存优化手段虽然我们都有了解,但如果在面试中,只能用清理进程,或创建大量临时对象的方式来回答内存优化问题,估计面试官肯定会让你回家。
在实际开发过程中,Android给每个应用进程分配的内存都是非常有限的,都希望做到 ”用时分配,及时释放“。那么如何保证在使用这些内存的不会有内存泄漏、内存抖动、短时间内分配大量的内存对象等问题呢?
这里为帮助大家更好地掌握内存优化以及性能优化的关键核心,给大家分享一份腾讯大佬历时三个月整理出来的《Android性能优化-大厂实战全解析》和《2023年最新Android面试题合集解析》,其中包含了跳槽面试中的各类Android常问性能优化问题
我们可以看下已经在大厂中的开发者,对于性能优化有着怎样的心得:


微信扫码获取学习资源,开启你的学习之旅!
扫码添加助教小姐姐
免费领取完整版【性能优化和面试题资料



《2023年最新Android面试题合集解析》


第一章 算法和数据结构面试题汇总


  • 请说一说HashMap,SparseArrary原理,SparseArrary相比HashMap的优点、ConcurrentHashMap如何实现线程安全?

  •  请说一说HashMap原理,存取过程,为什么用红黑树,红黑树与完全二叉树对比,HashTab、concurrentHashMap,concurrent包里有什么?

  • 请说一说二叉树遍历步骤?

  • 对称和非对称加密,MD5的原理?

  • 对称加密和分对称加密算法的区别

  • ......


...

...

...


第十章 Framework内核解析面试题汇总


  • Android中多进程通信的方式有哪些?

  • 描述下Binder机制原理?(东方头条)

  •  为什么 Android 要采用 Binder 作为 IPC 机制?

  • Binder线程池的工作过程是什么样?(东方头条)

  • AIDL 的全称是什么?如何工作?能处理哪些类型的数据?

  • Android中Pid&Uid的区别和联系

  • ......

...

...

...


微信扫码获取学习资源,开启你的学习之旅!
扫码添加助教小姐姐


免费领取完整版【性能优化和面试题资料


第十二章 程序性能优化与数据持久化面试题汇总


  • 一张图片100x100在内存中的大小?(字节跳动)

  • 内存优化,内存抖动和内存泄漏。(东方头条)

  • 什么时候会发生内存泄漏?举几个例子(美团)

  • Bitmap压缩,质量100%与90%的区别?(东方头条)

  • TraceView的使用,查找CPU占用(东方头条)

  • 内存泄漏查找 (酷我音乐)

  •  Android四大组件(以及Application)的onCreate/onReceiver方法Thread.sleep(),会产生几个ANR?(美团)

  • ......


《Android性能优化-大厂实战全解析》

PS:为了帮助大家更好地掌握内存优化的原理,成为真正的中高级Android开发者,我们特邀Alvin&Lance两位资深大咖为大家带来《如何满足对稳定性要求极高的系统应用开发》直播分享,两天时间,带你循序渐进快手内存优化那些事:



相关阅读

  • 安卓绝望?苹果A17仿生芯片性能曝光

  • 挤了好几年牙膏后,苹果在A17仿生芯片上,终于放大招了。日前,爆料人Max Tech,晒出了号称是苹果A17的GeekBench 6跑分成绩,其中单核高达3986分,多核高达8841分,几乎实现了MacBook的同
  • 首款 3nm 芯片 A17 仿生早期性能数据曝光

  • YouTuber @Max Tech 分享了苹果 A17 工程机的 Geekbench 6 单核、多核跑分数据。从它的性能数据来看,在台积电 3nm 的加持下,A17 不但能耗比更高,而且再次实现了性能上的飞跃。
  • 扫盲Elasticsearch~~~

  • 原价199元,现在参加拼团活动立享优惠价仅 99 元,赶快一起参团吧!《百万数据量下的高性能商品搜索系统实战》=== 课程福利 ===为了让更多同学学到赚到,《百万数据量下的高性能商
  • 两个月涌现90万个招嫖账号,快手居然还亏了120亿

  • 前不久,快手接连发布了两则打击招嫖的治理公告,处理的违规账号数量让人震惊:90多万个!这个数量,说是泛滥成灾也不为过。就在2月27日,据报道,有关部门将对多个平台存色情引流等被约
  • 封号!辛巴揭了快手的「短」

  • 关注「电商老高」公众号并转发本文凭截图免费领取全网首发直播策划方案(32页PPT+11套直播运营表)不得不说,辛巴真是一个惹事的主儿。不过这一次惹事,网友们却纷纷表示支持,因为他

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 防治慢性萎缩性胃炎,针灸来助力

  • 随着现代人生活节奏的不断加快,工作压力加重,不规律的饮食结构和习惯,使身体逐渐呈现出一种亚健康的状态。在这其中,各种消化道症状首当其冲,包括:胃痛、胃胀、嗳气、恶心泛酸等等
  • 这款 Linux 才是 Windows 用户完美的发行版

  • 点击上方蓝字 ● 关注Linux公社 Linux Mint 的桌面类似于 Windows,但这并不是 Mint 非常适合从 Windows 过渡到 Linux 的新用户的唯一原因。有许多适合新手的 Linux 版本