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

news/2024/11/27 14:37:02/文章来源:https://www.cnblogs.com/uwatech/p/18572261

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


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

UWA社区主页:community.uwa4d.com
UWA QQ群:793972859

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真机测试排查驻留的对象类型、数量是否合理。

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

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

封面图来源于网络


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

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/842295.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何构建和发布 npm 包到 GitHub Package Registry?

如何构建和发布 npm 包到 GitHub Package Registry? 发表于 2023/12/19 更新于 2023/12/23 作者 小王爷 4 分钟阅读本文将指导您在 GitHub Packages 上构建和发布 npm 到 GPR。npm:全称 Node Package Manager,NodeJs 包管理和分发的工具。 GPR:全称 GitHub Package Regist…

创业公司该怎么进行季度绩效考核?

创业公司在绩效考核中面临的问题主要包括目标设定不清晰、时间安排不合理、绩效标准不明确、缺乏反馈和沟通、过分关注短期成果、资源不足以及文化差异等。这些问题可能单独或共同存在,导致绩效考核无法达到预期效果,甚至可能对员工的工作积极性和公司的发展造成负面影响。因…

eGFR计算器,专业可靠的肾功能评估工具

在当今数字化医疗时代,准确评估肾功能对于疾病预防和治疗至关重要。eGFR计算器作为一款专业的在线工具,为医疗工作者和患者提供了便捷可靠的肾小球滤过率(eGFR)计算服务。在当今数字化医疗时代,准确评估肾功能对于疾病预防和治疗至关重要。eGFR计算器作为一款专业的在线工具…

数据库小版本升级

PostgresQL14.9升级到14.13 step 1.查看当前数据库版本和测试数据[postgres@localhost ~]$ postgres -V postgres (PostgreSQL) 14.11 [postgres@localhost ~]$ psql psql (14.11) Type "help" for help. postgres=# postgres=# select version(); version ---------…

HarmonyOS开发笔记2

应用基本信息 我们先来看下harmony的工程结构中的文件主要涉及以下几个目录AppScope > app.json5:应用的全局配置信息,详见app.json5配置文件。 entry:HarmonyOS工程模块,编译构建生成一个HAP包。src > main > ets:用于存放ArkTS源码。 src > main > ets &…

CAN收发器 – TJA1050(高速CAN)

芯片内部电路引脚定义:VCC:5V TX、RX:与设备的CAN控制器相连 Vref:参考电平输出 S:选择输入是高速模式或者静默模式ps:Vref和S可不接

常见的几款电脑桌面好用的便签备忘录推荐

1、系统自带便笺 Windows系统自带有便笺(sticky notes),打开即可使用,可记录简单的文字、图片,也可以列清单。 但是不支持设置提醒时间,无法一直悬挂在桌面上显示,实时同步到手机端操作很麻烦。 仅在电脑上简单记事,用它足够了!2、敬业签 界面可以一直悬挂在桌面上置顶…

【java开发】使用Launch4j将Web应用的Jar包打包成exe

如果当你在工作中使用Java比较多,有时会碰到将Jar包打包成exe部署在客户电脑上的需求。经过一顿操作猛如虎的网上搜索,最后技术选型选择了Launch4j,就图它开源免费、上手简单。 Launch4j 是一个跨平台工具,用于将以 JAR 文件分发的 Java 应用程序封装为轻量级的 Windows 原…

modbus通讯协议

一.modbus的四种传输协议: Modbus RTU:使用二进制格式进行数据传输,通讯效率更高. Modbus ASCII使用ASCII码进行数据传输,可读性好,但通讯效率更低. Modbus TCP/IP是基于以太网的一种通讯方式,它将Modbus协议封装在TCP/IP协议栈中,通过以太网传输数据。具有高速、稳定的特…

简单搭建一个小型拓扑,练习路由器的Esay IP的设置

内网用户需要访问外网时,可以通过配置NAT,实现IP数据报标头IP的替换。 本条博客是NAT转换的具体实现方式,由华为官方文档摘录Esay IP的实现。1. cloud云的配置 增加两个Ethernet端口,添加到端口映射表2.路由器的配置# 进入系统视图 <Huawei>system-view # 查看简洁的…

使用 Pyinstaller 打包为 windows exe程序 添加管理员权限的多种方式

使用 Pyinstaller 打包为 windows exe程序 添加管理员权限的多种方式 本文提供几种在使用 Pyinstaller打包后,为包体 exe提升管理员权限的方式。 注意事项: 管理员权限的必要性:确保程序确实需要管理员权限,否则用户可能会质疑程序的安全性。 数字签名:最好对生成的 .exe …

DSPf28335-时钟及控制系统

外部晶振30Mhz,经过十倍频与二分频得到150Mhz系统时钟系统时钟在供给外设,为不同的外设提供不同的时钟频率,进行不同程度的分频分别供给SPI-A,SCI-A;I2C-A;eCAN-A/B;ePWM;eCAP等外设进行系统控制;