对象的引用,释放和销毁

Posted snowcoder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象的引用,释放和销毁相关的知识,希望对你有一定的参考价值。

写代码时候大家的主程想必都提过很多次,要正确管理所有对象的生命周期,没用的时候及时的释放掉。防止出现内存泄漏。最近做项目时候碰到了一些很好玩的事情,就是很多界面在层级下调之后,原本动态加载的物体就静静的呆在界面里,再次上调界面层级的时候又生成了新物体,导致了drawcalls莫名偏高。很多人养成了及时释放内存的好习惯,但是对于及时销毁物体却比较迟钝,因为现在的引擎里在场景的生命周期到达关闭就会自动销毁生成的物体,在大部分人的入门阶段基本都不会被物体的销毁困扰到。即使后面把大部分游戏内容的显示放到了UIcanvas下面,大家也会选择在关闭界面时候对界面内容进行统一的销毁。但是很多时候,你的UI生命周期并不是单纯的跟着显示周期走的,考虑到3dUI和scene内碎片化UI显示等各种进阶的需求,更多时候我们的UI生命周期是跟着游戏逻辑走的,这时候销毁对象的重要性就不言而喻了。偶尔一两个动态图片的重载可能不算什么大问题,UI里要是多载几个RT,那drawcalls想必大家都懂的。同时,销毁和引用的释放顺序也非常的重要,个人建议是先销毁对象后再释放内存,主要是从逻辑上对齐unity中C#支持的IDisposable接口特性。毕竟lua只是脚本语言,执行者还是c#,对齐C#的逻辑才能防止出现意外情况。

 

以上是关于对象的引用,释放和销毁的主要内容,如果未能解决你的问题,请参考以下文章

销毁对象在java中怎么用

如何释放Python占用的内存

js的内存释放初步理解

JavaScript基础知识六(内存释放作用域销毁)

python如何让程序一直运行且内存资源自动释放?

垃圾回收机制