FPS游戏之漫谈低内存性能优化

2024-02-28 12:12

本文主要是介绍FPS游戏之漫谈低内存性能优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我想各位专门优化公司项目的一定会定位分析出来很多模块明明已经退出了 比如宝箱模块,明明已经离开当前界面,还有很多未常驻内存的资源占用了内存,
那我们遇到低端机器很容易出现闪退,反应速度慢等问题,那么我们一般在当前宝箱模块关闭的时候 断开所有的引用关系,然后在调用unity引擎给我们提供的接口Resources.UnloadUnusedAssets

Resources.UnloadUnusedAssets 是什么呢?为什么要调用这个 ,因为他可以帮你清理没有引用到的资源,是否内存,当然至于他分多少帧 或者说分多少次是否 是他自己的策略。
为什么要分帧 因为东西太多了回收的步骤也很多
下面看官方解释

Resources.UnloadUnusedAssets 是Unity引擎中的一个函数,主要用于优化内存管理。当你的游戏中有一些资源(如纹理、音频文件、模型等)在当前场景或特定的脚本中并未被使用,但它们仍然存在于内存中,这可能会占用不必要的内存空间,特别是在移动设备或者性能有限的平台上,这可能会导致性能下降。 UnloadUnusedAssets 函数的作用就是释放这些未被使用的资源,从而减少内存占用。
这个函数的具体实现细节涉及到Unity的资源管理系统。Unity将所有加载的资源存储在一个全局的资源缓存中,当你需要使用某个资源时,它会从缓存中获取。当你不再需要某个资源时,如果该资源没有被其他地方引用,Unity会将其标记为“未使用”并可能在适当的时候释放其内存。
调用 Resources.UnloadUnusedAssets 后,Unity会检查所有未被引用的资源,并尝试卸载它们。这个过程通常是异步的,因为Unity需要确保在卸载过程中不会影响到游戏的运行。然而,需要注意的是,这个操作并不能立即释放所有的内存,因为Unity可能还会保留一些资源以备后续使用,或者在内存不足时重新加载。
总的来说, Resources.UnloadUnusedAssets 是一个用于优化内存管理的工具,可以帮助开发者在保证游戏性能的同时,更好地管理资源的加载和释放。

作为对比

在Unity引擎中,C#的垃圾回收(Garbage Collection, GC)通常不会直接阻塞主线程,也就是说,GC过程会在后台进行,不会直接影响游戏的实时性。这是因为在Unity中,为了保持流畅的游戏体验,垃圾回收通常被设计为非阻塞的,以避免在执行关键游戏逻辑时暂停。
然而,虽然垃圾回收不会直接阻塞主线程,但频繁的垃圾回收可能会导致短暂的性能下降,因为GC需要扫描和整理内存。如果游戏中的对象创建和销毁非常频繁,或者内存泄漏严重,可能导致GC工作量增大,从而影响游戏性能。因此,开发者应该尽量避免不必要的资源分配和及时释放不再使用的对象,以减少GC的负担。
另外,Unity提供了几种内存管理策略,例如 UseGUILayout 和 ReapObjects ,可以帮助你更好地控制内存的使用和释放,以优化游戏性能。总的来说,虽然GC不会卡住主线程,但合理地管理内存仍然是提高游戏性能的重要手段。

这篇关于FPS游戏之漫谈低内存性能优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/755469

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的