2. 托管内存

作者: Wenchao | 来源:发表于2018-07-11 21:43 被阅读0次

    对于Unity内存管理而言,需要理解托管堆。对于如何分析托管内存和如何优化内存,可以参见Unity优化中的理解托管堆部分。

    Assets 资产

    Unity中的Assets在运行过程中会对原生内存和托管内存造成影响。Unity运行过程中是不会将托管的内存交还给操作系统重新利用,只有等到应用运行结束才会释放。如果碎片化很严重,碎片化的内存难以回收,托管的内存堆会一直保持增长直到消耗完所有的内存。这个行为是很难预测的,所以了解Asset在内存中的存放方式就非常重要了:

    • 使用Destroy(myObject)来销毁Object(对象)并且释放对应的内存。将某个Object的引用置成null并不会释放内存空间。
    • 应该把长期存在的对象设成类,短时间存在的对象设为结构体。结构体不会再内存堆上分配所以不会引起垃圾回收。
    • 重用临时缓冲区来保证临时分配的内存的需求,而不是频繁分配内存。
    • 枚举器(Enumerator)永远不会清除自己的内存。
    • 避免使用永远不会结束的协程(Coroutine),尤其是会在协程里面分配大量的托管内存,协程在运行过程中会保持堆中的栈分配内存,直到协程结束的时候才会释放。

    更详细的参考资料最好去参阅上面提供的链接地址,会有更深入的理解。

    相关文章

      网友评论

        本文标题:2. 托管内存

        本文链接:https://www.haomeiwen.com/subject/vchuuftx.html