我可以在Unity3D中的主线程之外的其他线程上运行gc collect吗?

时间:2016-04-08 09:09:58

标签: c# unity3d garbage-collection

我试过但看起来我的ui仍然落后于gc.collect。有可能吗?有一些技巧吗?主要目的是减少自动运行的gc.collect的滞后。

2 个答案:

答案 0 :(得分:4)

这不会解决你的问题。解决方案是在游戏过程中不分配内存。请改用对象池。使用对象池,您将重新使用GameObjects而不是实例化并销毁它们。

修改

Unity 2017支持C#4.5,因此您现在可以执行此操作,但正确的解决方案是使用对象池。这样,您就不必一直致电GC.Collect

答案 1 :(得分:2)

只能从C#4.5开始执行non-blocking garbage collection

因此,使用Unity从哪个线程调用收集并不重要(如果我没记错的话,Mono版本应该对应于C#3或3.5)。

avoid尽可能多地进行运行时分配是一种很好的做法。

您可以手动定期触发垃圾回收,以避免出现峰值。