合理oa系统源码下载优化unity的垃圾回收

合理oa系统源码下载优化unity的垃圾回收

ID:28052606

大小:106.00 KB

页数:9页

时间:2018-12-07

合理oa系统源码下载优化unity的垃圾回收_第1页
合理oa系统源码下载优化unity的垃圾回收_第2页
合理oa系统源码下载优化unity的垃圾回收_第3页
合理oa系统源码下载优化unity的垃圾回收_第4页
合理oa系统源码下载优化unity的垃圾回收_第5页
资源描述:

《合理oa系统源码下载优化unity的垃圾回收》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、在游戏0A系统源码下载dsluntan.comQ:3393756370VX:17061863513运行的吋候,数据主要存储在内存屮,当游戏的数据在不需要的时候,存储当前数据的内存就可以被回收以再次使用。闪存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使用的过程。Unity屮将垃圾回收当作内存管理的一部分,如果游戏屮废弃数据占用内存较大,则游戏的性能会受到极大影响,此时垃圾回收会成为游戏性能的一大障碍点。本文我们主要学习垃圾回收的机制,垃圾回收如何被触发以及如何提GC收效率来提高游戏的性能。Unity内存管理机制简介要想丫解垃圾回收如何工作以及何时被触发,我

2、们首先需耍丫解unity的内存管理机制。Unity主要采用自动内存管理的机制,幵发时在代码屮不需要详细地告诉unity如何进行内存管理,unity内部自身会进行内存管理。这和使用C++开发需要随时管理内存相比,有一定的优势,当然带来的劣势就是需要随时关注内存的增长,不要让游戏在手机上跑"飞"了。unity的自动内存管理可以理解为以下几个部分:1)unity内部有两个内存管理池:堆内存和堆栈内存。堆栈内存(stack)主要用来存储较小的和短哲的数据,堆内存(heap)主要用來存储较大的和存储时间较长的数据。2)vmity中的变量只会在堆栈或者堆内存上进行内存分配,变量要么存储在堆栈内存上,要

3、么处于堆内存上。3)只要变量处于激活状态,则其占用的内存会被标记为使用状态,则该部分的内存处于被分配的状态。4)一旦变量不再激活,则其所占用的内存不再S要,该部分内存可以被回收到内存池中被再次使用,这样的操作就是内存回收。处于堆栈上的内存回收及其快速,处于堆上的内存并不是及时回收的,此时其对应的内存依然会被标记为使用状态。5)垃圾回收主要是指堆上的内存分配和回收,unity屮会定时对堆内存进行GC操作。在了解了GC的过程后,下面详细丫解堆内存和堆栈内存的分配和回收机制的差别。堆栈内存分配和回收机制堆栈上的内存分配和回收十分快捷简单,因为堆栈上只会存储短暂的或者较小的变呈。内存分配和回收都会

4、以一种顺序和大小可控制的形式进行。堆栈的运行方式就像stack:其本质只是一个数据的集合,数据的进出都以一种固定的方式运行。正是这种简洁性和固定性使得堆栈的操作十分快捷。当数据被存储在堆栈上的时候,只需要简单地在其后进行扩展。当数据失效的时候,只需要将其从堆栈上移除。堆内存分配和回收机制堆内存上的内存分配和存储相对而言更加复杂,主要是堆内存上可以存储短期较小的数据,也可以存储各种类型和大小的数据。其上的内存分配和回收顺序并不对控,对能会要求分配不同大小的内存单元來存储数据。堆上的变S在存储的时候,主要分为以下儿步:1)首先,unity检测是否有足够的闲置内存单元用来存储数据,如果有,则分配

5、对应大小的内存单元;2)如果没有足够的存储单元,unity会触发垃圾回收来释放不再被使用的堆内存。这步操作是一步缓慢的操作,如果垃圾回收后有足够大小的内存单元,则进行内存分配。3)如果垃圾回收后并没有足够的内存单元,则imity会扩展堆内存的大小,这步操作会很缓慢,然后分配对应大小的内存单元给变最。堆内存的分配有可能会变得十分缓慢,特别是在需要垃圾回收和堆内存需要扩展的愔况下,通常需要减少这样的操作次数。垃圾回收吋的操作当堆内存上一个变量不再处于激活状态的时候,其所占用的内存并不会立刻被回收,不再使用的内存只会在GC的时候才会被回收。每次运行GC的时候,主要进行下面的操作:1)GC会检查堆

6、内存上的每个存储变最;1)对每个变量会检测其引用是否处于激活状态;2)如果变量的引用不再处于激活状态,则会被标记为nJ■回收;3)被标记的变量会被移除,其所占有的内存会被回收到堆内存上。GC操作是一个极其耗费的操作,堆内存上的变S或者引用越多则其运行的操作会更多,耗费的时间越长。何时会触发垃圾回收主要有三个操作会触发垃圾回收:1)在堆内存上进行内存分配操作而内存不够的时候都会触发垃圾回收来利用闲置的内存;2)GC会自动的触发,不同平台运行频率不一样;3)GC可以被强制执行。特别是在堆内存上进行内存分配时内存单元不足够的时候,GC会被频繁触发,这就意味着频繁在堆内存上进行内存分配和回收会触发

7、频繁的GC操作。GC操作带来的问题在了解GC在unity内存管理中的作用后,我们要考虑其带来的问题。最明显的问题是GC操作会需要大量的吋间来运行,如果堆内存上有大量的变量或者引用需要检查,则检查的操作会十分缓慢,这就会使得游戏运行缓慢。其次GC可能会在关键时候运行,例如在CPI处于游戏的性能运行关键时刻,此时任何一个额外的操作都可能会带来极大的影响,使得游戏帧率下降。另外一个GC带来的问题是堆内存的碎片划。当一个内存单元

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。