Unity引擎的内存管理机制是怎样的?

2回答

Unity引擎的内存管理机制是怎样的?

提问者 winfireliao 2015-11-20 2.7k浏览

1、关于profiler里面的Reserved Total的理解,Unity引擎向系统申请的一块内存给引擎用,拥有的可以使用的大小,就是Reserved Total ,这个理解是否正确?
2、引擎在什么情况下会向系统申请更多的内存,在什么情况下会向系统释放内存,或者reserved total还剩下多少时,引擎会再次向系统申请内存,同样在reserved total剩余容量超过多少时会释放内存,这个开发人员能否控制?
3、引擎向系统申请的内存,是怎么管理的;
4、unity引擎自身的内存管理机制和mono的内存机制的相似和不同点是什么?
5、
unity引擎自身的内存管理机制中,有类似Mono GC算法没,有的话,和GC算法的区别是什么?


快来消灭0回答吧

{{ dataList.answer_count | view-format }}回答
  • Unity官方专家 2015-12-03 15:32

    1&2&3. Used Total和Reserved 均是物理内存,其中Reserved是unity向系统申请的总内存,Unity底层为了不经常向系统申请开辟内存,开启了较大一块内存作为缓存,即所谓的Reserved内存,而运行时,unity所使用的内存首先是向Reserved中来申请内存,当不使用时也是先向Reserved中释放内存,从而来保证游戏运行的流畅性。当Reserved中空余内存不够程序下一次申请内存的大小时,Reserved就会重新向系统申请内存。同时,当Used Total向Reserved释放一定内存后,Reserved也会将一部分内存释放会系统。这部分我们无法控制。 

    4. mono进行内存申请和释放时,会向底层unity进行内存的申请和释放。 

    5. unity自身的内存池并不会像gc算法一样提供内存回收,释放。

    0评论
  • 可可塔顶 2016-03-30 11:12
    学习
    0评论
  • {{ answer.user.NickName }} {{ answer.profession }} {{ answer.created_at | time-format }}
    专家回答
    {{{ answer.answer }}}
    {{ answer.answer_count | view-format }}评论
加载中... 查看更多回答