Babybus-u3d技术交流-不经意间的内存泄露
实践证明,所有继承至UnityEngine.Object的对象,都需要手动Destroy,否则必然导致内存泄露。
一般我们不会忘记Destroy GameObject对象,因为在层级树中可以看到。但是类似于AudioClip的对象却可能被我们忽略,unity中有个对象池管理这些东西,保存了它们的引用,所以不能自动垃圾回收(引用计数不为0)
如下面代码:
Destroy (audio.clip);audio.clip = Microphone.Start("", false, 30, 44100);
先前的Microphone.Start 返回的对象不仅仅被microphoneClip所引用,所以必须Destroy。
网友评论