为什么Profiler中看到的纹理内存比实际占用大

1)为什么Profiler中看到的纹理内存比实际占用大
2)为什么Hidden Shader占用两份内存开销
3)在Destroy前,需要把所有Texture引用都释放掉吗
4)ManagedHeap.UsedSize占用内存过大问题


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

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问答社区提供了回答

Memory

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

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

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

针对以上问题,有经验的朋友欢迎转至社区交流:
UWA问答 | 游戏开发者互动问答社区 | 侑虎科技

封面图来源于网络


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

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com

 

内容概要:本文深入探讨了多种高级格兰杰因果检验方法,包括非线性格兰杰因果检验、分位数格兰杰因果检验、混频格兰杰因果检验以及频域因果检验。每种方法都有其独特之处,适用于不同类型的时间序列数据。非线性格兰杰因果检验分为非参数方法、双变量和多元检验,能够在不假设数据分布的情况下处理复杂的关系。分位数格兰杰因果检验则关注不同分位数下的因果关系,尤其适合经济数据的研究。混频格兰杰因果检验解决了不同频率数据之间的因果关系分析问题,而频域因果检验则专注于不同频率成分下的因果关系。文还提供了具体的Python和R代码示例,帮助读者理解和应用这些方法。 适合人群:从事时间序列分析、经济学、金融学等领域研究的专业人士,尤其是对非线性因果关系感兴趣的学者和技术人员。 使用场景及目标:①研究复杂非线性时间序列数据的因果关系;②分析不同分位数下的经济变量因果关系;③处理不同频率数据的因果关系;④识别特定频率成分下的因果关系。通过这些方法,研究人员可以获得更全面、细致的因果关系洞察。 阅读建议:由于涉及较多数学公式和编程代码,建议读者具备一定的统计学和编程基础,特别是对时间序列分析有一定了解。同时,建议结合具体案例进行实践操作,以便更好地掌握这些方法的实际应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值