简介

当游戏运行时,使用内存存储数据。当数据不再需要时,存储这些数据的内存被释放,以便重新使用。我们把已经存储了数据,但是已经不再使用这些数据的内存叫做垃圾。我们把重新使得这些存储垃圾的内存变的可用的过程叫做垃圾回收。

Unity使用垃圾回收作为内存管理的一部分。如果垃圾回收执行的太频繁或者垃圾太多,那么我们的游戏可能会性能较差。这意味着垃圾回收是很常见的引起性能问题的原因。

在这篇文章中,我们将学习垃圾回收怎样工作,在什么时间发生,以及怎样有效率的使用内存以便把垃圾回收对我们游戏的影响降到最低。

Unity内存管理概述

为了理解垃圾回收怎么样工作以及什么时候发生,我们必须首先理解内存使用在Unity中是怎么工作的。Unity管理内存的方法叫做自动内存管理。这意味着我们的代码不需要明确的告诉Unity怎么样在细节上去管理内存。Unity替我们做了这些。

在本质上,Unity中的自动内存管理是这样工作的:

-Unity在两种内存池中存取:栈内存和堆内存。栈用来存储短期的和小块的数据,堆用来存储长期的和大块的数据。

-当一个变量创建时,Unity在栈或堆上申请一块内存。

-只要变量在作用域内(仍然能够被我们的代码访问),分配给它的内存表示在使用中。我们称这块内存已经被分配。我们描述一个变量被分配到栈内存为栈上对象,一个变量被分配到堆内存为堆上对象。<