了解 Android 内存管理并设置用于衡量游戏内存用量的工具后,下一步就是主动减少和优化内存用量。 遵守 Android 的严格限制有助于防止系统关闭游戏、缩短启动时间,并确保游戏在所有设备上都能流畅运行。
本指南提供了一些实用技巧,可帮助您减少游戏的内存占用空间,具体侧重于资源级优化、引擎专用配置和内存管理最佳实践。
减少 Unity 中的内存用量
由于 Unity 的架构设计,一旦原生块分配器和托管堆扩展,即使在资源释放后,引擎也倾向于保留这些内存页以供重复使用,而不是立即将其返回给操作系统 (OS)。具体而言,虚拟地址空间(预留内存)在进程的生命周期内保持预留状态,而物理内存 (RSS) 不会立即回收,直到发生多个垃圾回收 (GC) 和修剪周期后才会回收。因此,临时内存峰值可能会导致驻留内存长时间保持膨胀状态,即使实际用量下降也是如此。这种行为会增加低端设备上出现内存不足 (OOM) 崩溃的风险,并降低整体运行时稳定性。
因此,必须通过以下三个核心支柱来优化 Unity 内存,这些支柱是根据这些引擎行为量身定制的:
- 控制活跃内存用量,以从一开始就防止出现内存峰值。
- 管理纹理格式和着色器变体,以确保不会实例化不必要的资源和原生资源。
- 重构运行时代码结构,以消除托管堆上的不必要分配,从而最大限度地减少 GC 频率和堆扩展。
如需了解详情,请参阅 Unity 内存优化。