簡介

當(dāng)游戲運(yùn)行時(shí),使用內(nèi)存存儲(chǔ)數(shù)據(jù)。當(dāng)數(shù)據(jù)不再需要時(shí),存儲(chǔ)這些數(shù)據(jù)的內(nèi)存被釋放,以便重新使用。我們把已經(jīng)存儲(chǔ)了數(shù)據(jù),但是已經(jīng)不再使用這些數(shù)據(jù)的內(nèi)存叫做垃圾。我們把重新使得這些存儲(chǔ)垃圾的內(nèi)存變的可用的過程叫做垃圾回收。

Unity使用垃圾回收作為內(nèi)存管理的一部分。如果垃圾回收執(zhí)行的太頻繁或者垃圾太多,那么我們的游戲可能會(huì)性能較差。這意味著垃圾回收是很常見的引起性能問題的原因。

在這篇文章中,我們將學(xué)習(xí)垃圾回收怎樣工作,在什么時(shí)間發(fā)生,以及怎樣有效率的使用內(nèi)存以便把垃圾回收對我們游戲的影響降到最低。

Unity內(nèi)存管理概述

為了理解垃圾回收怎么樣工作以及什么時(shí)候發(fā)生,我們必須首先理解內(nèi)存使用在Unity中是怎么工作的。Unity管理內(nèi)存的方法叫做自動(dòng)內(nèi)存管理。這意味著我們的代碼不需要明確的告訴Unity怎么樣在細(xì)節(jié)上去管理內(nèi)存。Unity替我們做了這些。

在本質(zhì)上,Unity中的自動(dòng)內(nèi)存管理是這樣工作的:

-Unity在兩種內(nèi)存池中存取:棧內(nèi)存和堆內(nèi)存。棧用來存儲(chǔ)短期的和小塊的數(shù)據(jù),堆用來存儲(chǔ)長期的和大塊的數(shù)據(jù)。

-當(dāng)一個(gè)變量創(chuàng)建時(shí),Unity在?;蚨焉仙暾堃粔K內(nèi)存。

-只要變量在作用域內(nèi)(仍然能夠被我們的代碼訪問),分配給它的內(nèi)存表示在使用中。我們稱這塊內(nèi)存已經(jīng)被分配。我們描述一個(gè)變量被分配到棧內(nèi)存為棧上對象,一個(gè)變量被分配到堆內(nèi)存為堆上對象。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式