【厚积薄发】为什么Profiler中看到的纹理内存比实际占用大

文摘   2024-11-25 18:30   上海  
这是第411篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com

UWA QQ群:793972859


本期目录:
  • 为什么Profiler中看到的纹理内存比实际占用大

  • 为什么Hidden Shader占用两份内存开销

  • 在Destroy前,需要把所有Texture引用都释放掉吗

  • ManagedHeap.UsedSize占用内存过大问题


Memory

Q1:我在编辑器Profiler中看到很多纹理都是实际大小2倍还多,这是什么原因?


A1:编辑器的性能分析工具不准是正常的,内存和耗时都要以真机测试为准。

Q2:但是我们的项目就只有PC的,如何做真机测试呢?


A2:PC也是有真机的,打包以后运行exe文件,再连接工具分析。

该回答由UWA提供欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6743f61f3d306f3e9d594da4
Memory

Q:请问下图这部分Hidden Shader占用两份内存开销是什么原因?


比如说两份UberPost,看起来没有Editor:



或者说有没有可能是因为加载了两次PostProcessData导致的?因为我看两份占用中每份都会引用一个PostProcessData。


A:可以检查下是否在Graphics-Always Included Shaders中有一份或者首场景有对象引用,然后又从AssetBundle里加载了一份。


该回答由UWA提供欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6743efb0682c7e5cd61bf99f
Memory

Q1:如下图,有一个Texture被引用三次,我要删除的时候就得把这三个引用都释放掉再Destroy吗?

A1:new几次,就Destroy几次,引用可以无视。引用处会变成空图片效果。
感谢jump晃悠@UWA问答社区提供了回答


Q2:那他不会因为还有引用而导致Destroy失败吗?


A2:可以Destroy一个还在显示的试试看。

感谢jump晃悠@UWA问答社区提供了回答

Q3:对Destroy这个方法还有点疑惑,我现在Destroy一个Texture,但是Material没释放,这个Texture在Profile还是存在没被释放掉,如下图:


是不是在还有引用计数的情况下,最后Destroy会失败?


A3:Material看你是引用的Asset的Mat还是自己修改后生成的Instance,如果是Instance你要自己手动负责释放。
感谢小波@UWA问答社区提供了回答

Q4:我们没有本地Asset,都是通过数据加载实例化出来的,Material、Texture、Mesh都是实例化出来的,所以这三个我都要Destroy掉吗?


A4:如果你是Prefab这种实例化出来,只要Mat你没有修改过,或者你引用过导致他实例化出来,那你就不用单独Destroy,如果你Mat是new出来的,你肯定要Destroy。

感谢小波@UWA问答社区提供了回答


Q5:所以如果我只要Destroy贴图没有Destroy Mat,那我的贴图就不会被Destroy成功吗?


A5:可以在new Texture的地方包装一个CreateTexture的自定义方法,在里面自己记录下创建tex的数量,Destroy的地方也是包装一个DestroyTexture方法,减少tex的数量,这里需要看下全部Destroy之后数量是不是归零了,因为有可能你销毁的数量没有创建的数量多,也有可能你前面刚Destroy掉,后面又给new出来了。


感谢jump晃悠@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6743f434682c7e5cd61bf9a0
Memory

Q:项目这部分内存占用这么大怎么办?


A:就是托管堆内存的占用。C#的对象、碎片和预留的占用都统计在这里。最好用MemoryProfiler真机测试排查驻留的对象类型、数量是否合理。


连接工程可定位到堆内存对象的引用链信息,更有助于精准定位到问题。


针对以上问题,有经验的朋友欢迎转至社区交流
https://answer.uwa4d.com/question/6743f6cf682c7e5cd61bf9a1

封面图来源于网络


天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。


UWA官网:www.uwa4d.com

UWA社区:community.uwa4d.com

UWA学堂:edu.uwa4d.com

官方技术QQ群:793972859


(长按识别二维码进入UWA问答)


点击下方名片关注我们,将我设为星标,及时接收小编每日推送哦,性能优化不迷路~

 

Unity版本使用情况统计(更新至2024年11月)


近期精彩回顾

【厚积薄发】Unity版本使用情况统计(更新至2024年11月)

【学堂上新】基于.NetCore开发MMORPG分布式游戏服务器

【万象更新】UWA Gears:一文速览Realtime模式新功能

【万象更新】如果闪退是因为内存崩了|GPM 2.0 实操之Session篇


侑虎科技
UWA,专业的游戏和VR应用性能优化平台。www.uwa4d.com
 最新文章