![]()
这是第470篇UWA技术知识分享的推送,精选了UWA社区、UWA AI问答的热门话题等技术知识点,助力大家更全面地掌握和学习。
UWA社区主页:community.uwa4d.com
UWA QQ群:793972859
本期目录:
系统层显存 vs 引擎层显存的差值从哪来
- 如何定位String的异常增长
本次推送的实战案例来自于使用UWA服务的项目的真实且典型的问题。UWA将关键线索、定位路径与处理建议整理成了可复用的案例笔记,便于大家快速对照、排查自身项目中的同类问题。
实战案例
Q:我们项目中通过系统层统计到的显存有1.5GB,但是通过引擎层采集到的纹理、网格、RT这些加起来也只有400+MB,为什么会这样,其它的部分是什么呢?
![]()
![]()
A:这个其实是一种比较少见的情况,根据以往的经验来说可能有以下几种可能性:
1. Shader占用本身是属于引擎层Native部分的,在运行中会执行Shader.CreateGPUProgram把它编译成GPU可以理解使用的一个Program,生成的这个GPU Program在一些项目中可能造成相当可观的高占用,我们在过往部分极端测试中也发现,它会同时导致系统层Native内存与GFX显存出现显著上升。
![]()
2. 测试发现一些RT除了在Memory Profiler中统计到的部分外,也会对显存造成一些额外的开销。
![]()
3. 在其它项目中还见过使用Compute Buffer,或者在引擎设置里面开辟一些额外的Buffer,通过C++进行加载的,也会对显存造成额外开销。
这些内存的具体来源是什么无法直接通过Unity引擎的分析工具进行分类和定位,建议可以做一些对比测试,比如去拆分一些渲染策略或场景,如果观察到开启某个渲染策略、进入某个渲染场景时显存出现明显的飙升,那么基本就能做更精准的定位了。
参考文章:
《Unity移动游戏工业级性能优化指南 3.0》
https://edu.uwa4d.com/course-intro/1/619
实战案例
Q:我用Memory Profiler看到托管堆内存部分中String驻留了50+MB、45万多条,这个现象是正常的吗?
![]()
A:这一部分占用还是比较高的,从下图右边的Details信息看很多来自TMP图集用的文本,这种大量字符串理论上不应该驻留在运行时了,我们生成了TMP的图集纹理后像这个文本应该就不需要了,可以看看是不是可以及时卸载。
![]()
无论是社区里开发者们的互助讨论,还是AI基于知识沉淀的快速反馈,核心都是为了让每一个技术难题都有解、每一次踩坑都有回响。本期分享分别来自UWA AI问答和UWA问答社区,希望这些从真实开发场景中提炼的经验,能直接帮你解决当下的技术卡点,也让你在遇到同类问题时,能更高效地找到破局方向。
封面图来源于网络
今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。
UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
点击下方名片关注我们,将我设为星标,及时接收小编每日推送哦,性能优化不迷路~
近期精彩回顾
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.