为什么抖音会占这么多内存?

首先,这是存储空间,不是内存。

然后,抖音的占用存储空间除了视频缓存以外,还有很多别的动态加载资源。

也许你新下载的抖音只有1-2GB大小,但是随着你用的功能越来越多,它会加载越来越多的动态资源,膨胀到10几GB,比如视频资源、Gecko资源,还有你的草稿。

而且,为了良好的用户体验,很多场景会用到资源预加载、数据预请求、资源长期缓存。

说到底,还是空间换时间,用用户的空间,减少用户的等待时间。

举个例子,为什么连刷10个视频不卡顿,来回切换也不卡顿?

你打开抖音的时候,首页列表给你10个视频,每个视频都会预加载前几秒,确保你刷到的时候秒播;而且在你播到第5-7个的时候,又会给你再请求10个视频,再预加载,确保你能一直刷下去。

所以,除了你看过的视频,你没看过的视频实际上也会存到你的手机里。

在举个例子,你身为创作者,在编辑视频、封面的时候,用过的特效就不需要再下载了,用过的封面也不用再下载了,这些你用过的资源早已下载到你的本地,也是要占用空间的,对你来说也是更好的体验。

再举个例子,为什么我刷到团购,点一下团购锚点页面就能立马弹出来,而且一下子就渲染好了?

其实,你刷到团购带货视频的时候,

App就会检测是否存在团购页面的Gecko资源,有的话直接用;

没有的话先请求对应的CDN,顺便下载对应的Gecko资源;

当然如果需要更新,就会先请求CDN顺便更新Gecko。

这些Gecko资源包含页面要运行的JS逻辑、图片、视频等,一旦下载了,它就会长期存在于你的手机上,除非你主动清缓存,或者等待App的缓存过期。

抖音上充斥着非常多这样的动态资源加载场景,最典型的就是春节活动。

你看,春节活动页面这么复杂,图片这么多,动效这么多,跳转的页面也能秒开,还带小游戏玩法,出了bug还需要动态修复不能发包,它怎么做到秒开秒用的?

其实就是用Gecko缓存在你的手机里,你用的时候只要做数据请求就好,资源都用本地的。

只要入口一出来,你有使用这个页面的可能性,它就给你预加载这个资源,缓存到本地,你功能用的越多,App就会臃肿的越快。

当然,Gecko本身的规定也是相当克制,每个资源包大小不得超过xx MB,这都是有严格规定的。

编辑于 2026-02-08 · 著作权归作者所有