一个 GIF 引起的内存爆炸
- 内容介绍
- 文章标签
- 相关推荐
自从开始做 Dexo APP 以来,我在浏览帖子时会偶尔遇到掉帧、卡顿等问题,体验并不理想。让 AI 尝试优化几次,收效甚微。
昨天晚上,我决定主动介入,用很多年前残留的开发经验,尝试让 AI 实现了一版优化方案。
优化方案完成后,我在测试站测试了几个帖子,觉得效果还可以,就准备在 L 站进行最终测试。
然而,当我在 L 站随机打开一个帖子之后,随手一滑,APP 帧率居然有一瞬间掉到了 20 多,有明显可感知的卡顿。
测试多次以后,发现是必现问题,于是我就开启了此次解惑之旅。
解惑过程
简单分析
- 对比其它帖子 — 没有发现异常,滑动效果达到预期
- 检查帖子内容 — 特殊的地方只是比其它帖子多几张图片,文字内容较长,还有二楼有一个长图,但 APP 加载的都是缩略图,问题应该不大
- AI 尝试解决 — 情况告诉 AI 后,它写了一堆代码,砍手又砍脚的加限制,没起作用
调试对比
- 调试模式查看 — 进入这个帖子后,随手一滑, APP 占用内存暴涨
- 分析内存占用 — 录制进入该帖子的 APP 内存状态, 结果发现占用内存最多的是 GIF 解码
- 定位具体问题 — 用浏览器打开帖子,搜索 GIF,GIF 大多来自用户头像右下角的资质图标
- 简单修复对比 — 隐藏资质图标,表现正常;显示资质图标但不再播放GIF,表现正常。
最终修复
通过以上操作,最终确定了是用户资质图标导致的异常,奇怪的是,只有这个帖子有问题。
于是我开始检查用户资质图标,下载该贴 2 楼用户的资质图标后查看,发现该图标分辨率是 512*512 ,且足足有 144 帧。
我原以为用户资质图标展示区域那么小,图片也应该非常小。因此我在使用的时候没有加任何限制,直接播放了 GIF,最终导致内存暴涨,滑动卡顿。万万没想到小小的图标下面,藏了个大。
自从开始做 Dexo APP 以来,我在浏览帖子时会偶尔遇到掉帧、卡顿等问题,体验并不理想。让 AI 尝试优化几次,收效甚微。
昨天晚上,我决定主动介入,用很多年前残留的开发经验,尝试让 AI 实现了一版优化方案。
优化方案完成后,我在测试站测试了几个帖子,觉得效果还可以,就准备在 L 站进行最终测试。
然而,当我在 L 站随机打开一个帖子之后,随手一滑,APP 帧率居然有一瞬间掉到了 20 多,有明显可感知的卡顿。
测试多次以后,发现是必现问题,于是我就开启了此次解惑之旅。
解惑过程
简单分析
- 对比其它帖子 — 没有发现异常,滑动效果达到预期
- 检查帖子内容 — 特殊的地方只是比其它帖子多几张图片,文字内容较长,还有二楼有一个长图,但 APP 加载的都是缩略图,问题应该不大
- AI 尝试解决 — 情况告诉 AI 后,它写了一堆代码,砍手又砍脚的加限制,没起作用
调试对比
- 调试模式查看 — 进入这个帖子后,随手一滑, APP 占用内存暴涨
- 分析内存占用 — 录制进入该帖子的 APP 内存状态, 结果发现占用内存最多的是 GIF 解码
- 定位具体问题 — 用浏览器打开帖子,搜索 GIF,GIF 大多来自用户头像右下角的资质图标
- 简单修复对比 — 隐藏资质图标,表现正常;显示资质图标但不再播放GIF,表现正常。
最终修复
通过以上操作,最终确定了是用户资质图标导致的异常,奇怪的是,只有这个帖子有问题。
于是我开始检查用户资质图标,下载该贴 2 楼用户的资质图标后查看,发现该图标分辨率是 512*512 ,且足足有 144 帧。
我原以为用户资质图标展示区域那么小,图片也应该非常小。因此我在使用的时候没有加任何限制,直接播放了 GIF,最终导致内存暴涨,滑动卡顿。万万没想到小小的图标下面,藏了个大。

