簡介
當(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)存為堆上對象。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26