Unity池内存,碎片

冷暖自知 提交于 2019-11-27 08:33:00

池内存最基础的原理

1.FiFo 队列 全称 First - in / First - out
2.FiLo 栈 全称 First - in / Last - out

栈的顺序是存储。
举个例子:在一个桶里持续往里放东西,最底下的永远在最底下,是有序的,数组持续往后加。
栈是有序的所以说它是不会出现碎片的。

从而引出来一个问题,什么是内存碎片呢?又是怎么产生的呢?

栈内存,栈内存是永远不会出现内存碎片的,因为它会叠加相当于它是无缝的所以说它是不会产生碎片。

接下来我说一下碎片是怎么产生的呢?
它是从堆内存出来的。
堆内存如同一个大大的棉花糖,我要拿一份内存吃掉它,系统会随机找到满足要求的地方抠出来,像一个蛀虫一样吃掉,当内存区域内存饱和的时候,它们中间狭小的缝隙就是内存的碎片,因为你永远都无法拿到。

 

下图就是一个堆内存的图,中间狭小的地方就是内存碎片

 

 

当然怎么才能去除内存碎片呢??

只能把你所有所占用的内存空间,重新整理,重新排序,一个一个标识好之后我以一个存续的方式声明我的空间划分我的内存,这时候,重新排列后才会把内存碎片干掉。

上面讲的就是一个池,池内存的过程。
池的概念就是我们内存的生成和分配的概念。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!