U
Unity
星辰学院
首页
课程表
章节导览
第 1 课
返回主站
首页
/
第 16 章 · 性能优化
/
第 267 课
LESSON 267 · 性能优化
内存管理
内存管理完成。下一课学场景加载优化。
⏱ 约 13 分钟
📊 难度:
入门
🗂 第 16 章 · 性能优化
📍 第 267 / 300 课
课程进度
267 / 300
🎯
本节学习目标
监控内存
掌握卸载时机
控制内存峰值
🚀
课程导读
“内存爆了闪退”是移动端大敌。本课学监控与回收内存。
◆
内存监控
看用了多少。
【Profiler Memory】Window → Analysis → Profiler → Memory 模块。
【看数据】Total Allocated(已分配)、Texture/Audio 占比、GC 堆大小。
【模块分类】看哪类资源占内存大头(纹理/音频/网格/动画)。
【运行时监控】GameObject 内存监控:
Debug.Log(System.GC.GetTotalMemory(false)); // GC 堆
【真实设备】真机看任务管理器/系统内存(进阶)。
【内存分布】
资源内存(纹理/音频/模型)。
运行时分配(对象、GC 堆)。
【目标】移动端 < 1-2GB(看设备)、PC 宽松。
【完成】“看得到”内存了!
💡
内存监控:Profiler Memory 看资源、System.GC 看堆。两项都盯。
◆
回收与生命周期
“该删就删”。
【Destroy】不用的大对象 Destroy 掉。
【场景卸载】切场景后旧场景资源被卸载(除非 DontDestroyOnLoad)。
【Resources.UnloadUnusedAssets()】卸载无引用的资源(协程调用,避免主线程卡):
StartCoroutine(UnloadCoroutine());
IEnumerator UnloadCoroutine() {
yield return new WaitForSeconds(5f);
Resources.UnloadUnusedAssets();
yield return null;
}
【注意】别频繁调用(有开销)。
【对象池】复用代替销毁(减少分配,第 198 课)。
【纹理卸载】大图不用时卸载(按场景/区域)。
【音频】长音频用 Streaming 后不占内存(第 266 课)。
【地址化】Addressables 按需加载/释放(进阶)。
【泄漏】DontDestroyOnLoad 的对象不会自动卸载:跨场景管理器用单例+小心。
【完成】内存“进出有度”。
【测试】长时间游玩后看内存是否稳定(无泄漏)。
【注意】真机长时间游玩是内存测试关键。
【常见坑】贴图集未压缩、动画不卸载、场景大资源常驻。
✅
内存管理 = 监控 + 按需卸载 + 对象池复用 + 防泄漏。四板斧。
⚠
常见错误与排查
⛔
错误:
内存一直涨不回落?
原因:
资源泄漏或没卸载
解决:
检查 DontDestroyOnLoad 常驻对象;卸载无用资源;用 Profiler 定位泄漏源。
★
动手练习
课后小任务(做出来才算真的学会)
用 Profiler 监控内存
实现按需卸载
长时间游玩验证内存稳定
✓
本节小结
内存管理完成。下一课学场景加载优化。
标记为已完成
完成打卡后,主站会实时更新你的学习进度 🎯
← 上一课
资源与加载优化
下一课 →
场景加载优化(异步)
↑