升级Unity后产生的Objects内存泄露现象

1)升级Unity后产生的Objects内存泄露现象
2)能否使用OnDemandRendering API来显示帧率
3)Unity闪退问题
4)配置表堆内存如何优化


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

Editor

Q:项目升到2022.3.28后观察到在真机上出现了之前没有的内存泄漏状况,用Memory Profiler排查后发现除了一些正常的资源和堆内存有轻微上升外,主要是有一部分Native-UnitySubsystemsObjects-泄露很明显,但没法定位。请问有没有人遇到这个问题?怎么解决?

A:可以参考下这篇官方论坛讨论和复现测试链接:
Memory leak in ScriptableObject containing SerializeReference in Android environment - Unity Engine - Unity Discussions

Unity Issue Tracker - Memory leak when using SerializeReference in IL2CPP Build

根据我们项目中的情况加上自己试验了下,发现触发条件比帖子中还要简单,都不用ScriptableObject+Addressable,只要任意带有[SerializableReference]特性的资源被销毁就会发生泄漏。而且看样子这个问题大概率会出现在所有2022以上及团结引擎的项目中,且目前未被修复。

考虑到使用这些Unity版本一般是基于支持鸿蒙或支持小游戏的主要目的,不大可能回退版本,那么目前处理方法可能就是要尽量避免使用这个特性。

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


Rendering

Q:看到一个优化,说不建议用Application.targetFrameRate来设置帧率,如果设置的过低,会把所有(包括输入、输出......)都降低,而采用OnDemandRendering可以只降低输出帧率,不会影响输入,想问下是否可行?
Rendering.OnDemandRendering-renderFrameInterval - Unity 脚本 API

逛论坛发现如下帖子,是在活跃时动态调节renderFrameInterval这种方法,不知是否可以?
按需渲染如何提高移动性能

public classMenu:MonoBehaviour
{// Start is called before the first frame updatevoidStart(){QualitySettings.vSyncCount =0;Application.targetFrameRate =60;// When the Menu starts, set the rendering to target 20fpsOnDemandRendering.renderFrameInterval =3;}// Update is called once per framevoidUpdate(){if(Input.GetMouseButton(0)||(Input.touchCount >0)){// If the mouse button or touch detected render at 60 FPS (every frame).OnDemandRendering.renderFrameInterval =1;}else{// If there is no mouse and no touch input then we can go back to 20 FPS (every 3 frames).OnDemandRendering.renderFrameInterval =3;}}
}

A:是否可行取决于你想要的应用场景和优化效果。OnDemandRendering这个只会影响渲染消耗,对于物理、动画等消耗不会产生影响。

OnDemandRendering.renderFrameInterval = 3

这样设定之后,相当于除了渲染之外的其他逻辑执行三次才会往渲染一次,画面也才会对应的有一次变化。

比如手游上常规的一个操作是玩家如果不操作一段时间就降低帧率并且调暗画面,这种时候预期玩家输入的响应速度并不高,因此使用修改Application.targetFrameRate的方式更好,对于功耗的降低更彻底。

我自己在游戏中使用OnDemandRendering的场景不多,还是要看题主想要应用的场景进行讨论才好判断。以及,最后降低频率带来的优化效果还需要量化测试。

感谢贾伟昊@UWA问答社区提供了回答


Editor

Q:遇到一个Unity闪退问题想请大家看看,是否有用Dots遇到过这个问题?

Unity 2022.3.18 + Entities 1.3.2 + IL2CPP,在少部分老ARMv7架构的安卓机子(如Samsung M13, Samsung A13, Samsung J8等)上,EntityManager.AddComponent(entity)会Crash,Crash堆栈在ComponentType.ReadWrite()里,TypeManager.GetTypeIndex()方法是取不到组件的查找ID导致的,组件T是符合非托管标准的结构。

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


Memory

Q:项目游戏的配置表的堆内存分配还有GC非常多,能不能分享下这块的性能一般是如何优化的?一般优化到什么水平比较合理?

A:有几个常见策略:

  1. 配置表的优化
    序列化库的选择:选择合适的序列化库可以显著减少内存占用。例如,ProtoBuf相比于JSON可以更紧凑地存储数据。

  2. 减少内存分配
    对象池技术:对于经常创建销毁的对象,采用对象池或者Class Pool可以减少频繁的GC。避免频繁创建临时对象:比如在循环中创建数组或集合。建议使用GOT Mono模式采集堆内存分配,查看是哪些函数或者变量导致临时分配较多。

  3. 通常配置表的堆内存驻留占用最好控制在20MB以内。

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

封面图来源于网络


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

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

 

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

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

相关文章

PHP 8.1.0-dev后门远程命令执行漏洞

#简介 PHP verion 8.1.0-dev于2021年3月28日与后门一起发布,但是后门很快被发现并删除。 #漏洞概述 PHP verion 8.1.0-dev的PHP在服务器上运行,则攻击者可以通过发送User-Agentt标头执行任意代码。 #影响版本 PHP 8.1.0-dev #环境搭建 新建docker…

CentOS 7 安装gcc编译环境

有时需要使用源码安装某个应用程序,有时还需要对源码进行一定程度的修改和定制才能满足业务需求,有时需要在linux环境下开发某个特定功能的c程序,此时都需要用到gcc编译环境,此时就需要安装gcc编译环境。 在 CentOS 7 上安装 C 编…

记一个mysql的坑

数据库表user, 存在一个name字段,字段为varchar类型 现在user表有这么两条记录: idnameageclass1NULL18一班2lisi20二班 假如我根据下面这一条件去更新,更新成功数据行显示为0 update user set age 19 where age 18 and class “一班”…

前端算法:字典and哈希表(力扣1题、349题解法)

目录 一、字典 1.概念 2.特点 3.在JS中如何实现 4.字典用法 使用对象作为字典 使用map 5.应用场景 二、哈希表 1.概念 2.工作原理 3. 在 JavaScript 中的实现 4.哈希表用法 使用 Map 作为哈希表 5.应用场景 三、字典与哈希表的区别 四、力扣算法实战 1.1题 两数…

LLM之RAG实战(四十四)| rag-chatbot:支持Huggingface和Ollama任意模型的多PDF本地RAG方案

特点: 支持本地运行和Kaggle (new)运行支持Huggingface 和Ollama 的任意模型Process multiple PDF inputs.Chat with multiples languages (Coming soon).Simple UI with Gradio. 一、安装使用 1.1 Kaggle(推荐) Step1:把https…

Android 10.0 Camera2 拍照镜像功能实现

1.前言 在10.0的系统rom定制化开发中,在进行camera2的相关拍照功能开发中,在某些时候会遇到拍照照片 左右镜像的问题,就是照片左半边和右半边是反的,所以就需要在拍照的时候保存图片的时候实现 左右镜像功能,接下来就来分析下拍照保存图片的流程 2.Camera2 拍照镜像功能实…

JDK17新特性,代码使用,作用详细讲解

目录 1.密封类和密封接口 作用 好处 1. 密封类 2. 密封接口 3. 非密封类 4. 抽象密封类 2.模式匹配for instanceof JDK17前的jdk版本 新JDK17 特性与优点 使用示例 注意事项 作用 3.文本块 作用 好处 代码实例 1. 基本语法: 2.换行和缩进: 3.包…

SQL 干货 | SQL 反连接

最强大的 SQL 功能之一是 JOIN 操作,它提供了一种优雅而简单的方法,将一个表中的每一条记录与另一个表中的每一条记录结合起来。不过,有时我们可能想从一个表中找到另一个表中没有的值。正如我们将在今天的博客文章中看到的,通过包…

Vue中v-bind对样式控制的增强—(详解v-bind操作class以及操作style属性,附有案例+代码)

文章目录 v-bind对样式控制的增强2.1 操作class2.1.1 语法2.1.2 对象语法2.1.3 数组语法2.1.4 使用2.1.5 Test 2.2 操作style2.2.1 语法2.2.2 使用2.2.3 Test v-bind对样式控制的增强 2.1 操作class 2.1.1 语法 <div> :class "对象/数组">这是一个div&l…

图片无损放大工具Topaz Gigapixel AI v7.4.4 绿色版

Topaz A.I. Gigapixel是这款功能齐全的图象无损变大运用&#xff0c;应用可将智能机拍摄的图象也可以有着专业相机的高质量大尺寸作用。你可以完美地放大你的小照片并大规模打印&#xff0c;它根本不会粘贴。它具有清晰的效果和完美的品质。 借助AIGigapixel&#xff0c;您可以…

【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(3)

1.问题描述&#xff1a; compatibleSdkVersion升级到5.0.0&#xff08;12&#xff09;之后&#xff0c;调用坐标系转换API&#xff1a;map.convertCoordinate(mapCommon.CoordinateType.WGS84, mapCommon.CoordinateType.GCJ02, { longitude: location.longitude, latitude:…

[Linux网络编程]01-网络基础

此部分为《计算机网络》理论基础&#xff0c;可简要了解 一.计算机网络体系结构 常见的体系结构 OSI体系结构(法律上的国际标准)&#xff1a;物理层->数据链路层->网络层->运输层->会话层->表示层->应用层 TCP/IP体系结构(事实上的国际标准)&#xff1a;…

web网页QQ登录

代码&#xff1a; <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>QQ登录ent</title> </head> <style>ul > li{list-style: none; } a …

【Linux】 Linux 释放内存脚本

在Linux系统中&#xff0c;通常不需要手动释放内存到操作系统&#xff0c;因为Linux内核会自动管理内存。不过在经常会遇到内存不足&#xff0c;系统应用运行效率低的情况 编写一个脚本来“释放”内存&#xff0c;可以通过调用sync命令同步磁盘&#xff0c;并通过echo命令写入特…

13.1 Linux_网络编程_TCP/UDP

字节序 1、概述 什么是字节序&#xff1a; 字节序就是字节的存储顺序&#xff0c;分为大端字节序和小端字节序。 大端字节序&#xff1a;低地址存高位&#xff08;网络&#xff09;小端字节序&#xff1a;低地址存低位&#xff08;主机&#xff09; 检验主机字节序模式&…

【Linux】-权限

&#x1f511;&#x1f511;博客主页&#xff1a;阿客不是客 &#x1f353;&#x1f353;系列专栏&#xff1a;深入代码世界&#xff0c;了解掌握 Linux 欢迎来到泊舟小课堂 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 ​ 一、权限的概念 在Linux 中&…

开源图像超分ECBSR项目源码分析

相关介绍 项目GitHub地址&#xff1a;https://github.com/xindongzhang/ECBSR项目相关论文&#xff1a;https://www4.comp.polyu.edu.hk/~cslzhang/paper/MM21_ECBSR.pdf&#xff08;也可以点这里下载&#xff09;论文解读&#xff1a;Edge-oriented Convolution Block for Re…

秃姐学AI系列之:语义分割 + 数据集 | 转置卷积 + 代码

语义分割 语义分割将图片中的每个像素分类到对应的类别 通常来说现在的会议软件的背景虚化这个功能用的就是语义分割技术 无人车进行路面识别也是语义分割技术 语义分割 vs 实例分割 语义分割将图像划分为若干组成区域&#xff0c;这类问题的方法通常利用图像中像素之间的相关…

go中阶乘实现时递归及迭代方式的比较

package mainimport ("fmt""time""math/big" )// 使用递归和 big.Int 计算阶乘 func FactorialRecursive(n *big.Int) *big.Int {if n.Cmp(big.NewInt(0)) 0 {return big.NewInt(1)}return new(big.Int).Mul(n, FactorialRecursive(new(big.Int…

基于Multisim三极管B放大系数放大倍数测量电路设计(含仿真和报告)

【全套资料.zip】三极管B放大系数放大倍数测量电路电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.用三个数码管显示B的大小&#xff0c;分别显示个位、十位和百位。 2.显示范围…