当前位置: 首页 > news >正文

Unity垃圾回收(GC)

1.GC的作用:定期释放不再使用的内存空间。

注:C++不支持GC,需要手动管理内存,使用new()申请内存空间,使用完后通过delete()释放掉,但可能出现忘记释放或者指针丢失的情况。

2.Unity中GC流程

        1)检查内存中所有的对象

        2)检查每个对象是否被其他对象引用

        3)GC会将没有被引用的对象标记为可释放

        4)释放所有被标记对象

3.Unity GC触发条件

        1)周期性触发,平台不同周期时间不同

        2)使用new()分配空间,但是内存空间满了

        3)手动使用System.GC.Collect(),并非立刻执行

4.GC执行的问题

        1)每次执行GC,都会暂停Unity主线程,因此游戏画面会停止渲染,造成卡顿与掉帧

        2)执行GC若内存仍然不足,会申请更大内存空间,造成更长时间卡顿

        3)Unity的GC采取不压缩(内存块不会从离散变连续)的机制,可能导致内存碎片化

5.避免GC导致性能问题的解决方案

        1)谨慎使用new(),并且避免在Update等周期函数中使用,array,class等分配在堆上

        2)使用struct代替class,因为struct分配在栈上

        3)多使用对象池与Cache(缓存)

6.造成GC的C#语法

        1)可以使用StringBuilder代替string

        2)yield与async(异步)

        3)装箱(变量转化为object类型)与拆箱(变量转为基本类型),可以使用.ToString()使得代码编译减少装箱操作,从而减少堆上内存分配。

        4)闭包

相关文章:

  • Spring Boot 中 AOP 的自动装配原理
  • 如何使用极狐GitLab 软件包仓库功能托管 npm?
  • 战术级微波干扰系统:成都鼎轻量化装备如何实现全频段智能压制?
  • http Status 400 - Bbad request 网站网页经常报 HTTP 400 错误,清缓存后就好了的原因
  • Java程序题案例分析
  • Nvidia-smi 运行失败(Failed to initialize NVML: Driver/library version mismatch)
  • 2025FIC初赛(手机)
  • 【实战教程】零基础搭建DeepSeek大模型聊天系统 - Spring Boot+React完整开发指南
  • 阿里云平台与STM32的物联网设计
  • 大模型Prompt工程2.0:多Prompt协同完全指南——从原理到实战,高效解锁AI深层潜力
  • 什么是回调 钩子 Hook机制 钩子函数 异步编程
  • shell脚本实现远程重启多个服务器
  • 代码随想录算法训练营第三十四天
  • 数据库补充知识
  • 【Redis】哨兵机制和集群
  • k8s 中 deployment 管理的多个 pod 构成集群吗
  • 技术视界|青龙机器人训练地形详解(二):添加地形到训练环境
  • Flutter TabBar / TabBarView 详解
  • 办公学习 效率提升 超级PDF处理软件 转换批量 本地处理
  • 重新定义高性能:Hyperlane —— Rust生态中的极速HTTP服务器
  • 常德网站建设/深圳网站营销seo费用
  • o2o平台是什么意思/迈步者seo
  • 网站建设课后心得/河北百度代理公司
  • 国内餐饮类网站欣赏/上海seo推广整站
  • 驻马店住房和城乡建设局网站/代运营公司哪家好一些
  • asp手机网站模板/谷歌搜索排名