简介
当游戏运行时,使用内存存储数据。当数据不再需要时,存储这些数据的内存被释放,以便重新使用。我们把已经存储了数据,但是已经不再使用这些数据的内存叫做垃圾。我们把重新使得这些存储垃圾的内存变的可用的过程叫做垃圾回收。
Unity使用垃圾回收作为内存管理的一部分。如果垃圾回收执行的太频繁或者垃圾太多,那么我们的游戏可能会性能较差。这意味着垃圾回收是很常见的引起性能问题的原因。
在这篇文章中,我们将学习垃圾回收怎样工作,在什么时间发生,以及怎样有效率的使用内存以便把垃圾回收对我们游戏的影响降到最低。
Unity内存管理概述
为了理解垃圾回收怎么样工作以及什么时候发生,我们必须首先理解内存使用在Unity中是怎么工作的。Unity管理内存的方法叫做自动内存管理。这意味着我们的代码不需要明确的告诉Unity怎么样在细节上去管理内存。Unity替我们做了这些。
在本质上,Unity中的自动内存管理是这样工作的:
-Unity在两种内存池中存取:栈内存和堆内存。栈用来存储短期的和小块的数据,堆用来存储长期的和大块的数据。
-当一个变量创建时,Unity在栈或堆上申请一块内存。
-只要变量在作用域内(仍然能够被我们的代码访问),分配给它的内存表示在使用中。我们称这块内存已经被分配。我们描述一个变量被分配到栈内存为栈上对象,一个变量被分配到堆内存为堆上对象。
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26
学习是年轻人改变自己的最好方式