Unity池内存,碎片

Posted couragewei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity池内存,碎片相关的知识,希望对你有一定的参考价值。

池内存最基础的原理

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

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

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

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

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

 

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

技术图片

 

 

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

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

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

以上是关于Unity池内存,碎片的主要内容,如果未能解决你的问题,请参考以下文章

简单内存池与定长内存池

如何降低IIS应用程序池内存消耗

实现池内存API-处理联合

实现高并发内存池

实现高并发内存池

数据库连接池内存泄漏问题的分析和解决方案