从满怀期待到心凉半截
那天我正盘算着在MacBook上重温《传送门2》,毕竟这台机器买回来一直当办公本,还没正经玩过游戏。我卸了一堆无用软件,腾出50GB空间,然后去Steam官网下载客户端。安装包大概200MB,不算大,但安装过程就让我皱眉——进度条走了快十分钟,期间风扇一直转。好不容易装好,登录账号,开始下载游戏,噩梦开始了。下载才到一半,系统通知“磁盘空间不足”。我一看,50GB剩余居然只剩5GB了!Steam到底吃了多少空间?我点开“关于本机”一看,好家伙,Steam相关文件占了将近30GB,其中光是下载缓存就占了一大半。
到底谁吃了我的内存?
我花了一个晚上研究Steam在Mac上的存储机制,总算搞明白几个主要元凶。
- 安装包与更新缓存:Steam客户端本身会保持多个版本备份,防止更新失败。在
~/Library/Application Support/Steam/package文件夹里,躺着好几个旧版本的压缩包,加起来能有好几GB。 - Shader预编译缓存:因为Mac用的是Metal图形API,而很多Steam游戏基于Vulkan或OpenGL,Steam Play会通过MoltenVK转译,每次运行前都要编译shader缓存。这些缓存存储在
~/Library/Application Support/Steam/steamapps/shadercache,动辄10GB以上。 - 游戏预分配空间:有些游戏在下载时会预先分配完整的安装空间,比如游戏实际只有20GB,但先划走30GB,导致可用空间瞬间缩水。下载完成后才释放多余部分,但在下载期间看起来就像内存被吞了。
- 截图与创意工坊:下载过程中还会同步云端截图,以及订阅的mod,不知不觉又占了几百MB。
最气人的是,这些占用很多都是“一次性”的——删除旧版本缓存后,Steam下次更新又会重新生成。Shader缓存更是删不得,删掉下次运行游戏还得重新编译,费时又耗电。
我的折腾过程
开始我尝试了最粗暴的方法:卸载重装。我直接把Steam拖进废纸篓,然后清理了~/Library/Application Support/Steam整个文件夹,再重新下载。确实干净了,但重新登录后,所有游戏又要重下,我才发现原来本地游戏库内容也被一并删除了,后悔莫及。
后来我学乖了,只清理特定文件夹:package里的旧版本、logs里的日志、dumps里的崩溃报告。我还把steamapps/common里的游戏移到外接硬盘,通过创建符号链接让Steam以为它们还在原位置。这个过程折腾了一下午,但最终释放了将近20GB空间。
不过,Shader缓存我始终没有好办法,只能放任不管。每次打开《城市:天际线》都要编译几分钟,编译完文件夹又胖一圈。我也试过关掉SteamPlay,但有些游戏就压根打不开了。
一些反思
Mac本身就不是为重度游戏设计的,Steam团队也更多精力放在Windows和Linux上,Mac版就像是个“二等公民”。虽然苹果想通过Metal和游戏移植工具包吸引开发者,但短期内Steam在Mac上的内存问题恐怕不会有大改善。我作为一个普通用户,只能学会跟这些“内存大”的现象共存。偶尔清理一下,腾出空间,然后继续享受那为数不多的Mac原生游戏。
现在,我的MacBook里Steam依然占据着25GB,但我已经不再惊讶了。毕竟,鱼和熊掌不可兼得,想要在Mac上玩游戏,就得接受这些内存上的妥协。
