为什么有时垃圾收集需要这么长时间(> 10ms)。

时间:2016-10-07 13:53:23

标签: c# unity3d

所以我在分析器中查看Unity中的两个不同项目。其中一个被列为具有<10 mb的分配gc,并且它以某种速率上升,然后每10帧丢弃(我猜的是垃圾收集)。发生跌落的时间非常短,不会对任何事情产生影响。

另一个项目,在分析器中显示我有300-400 mb分配gc。它以上述速率的1/10上升,但似乎每50-100 MB的分配gc仅收集gc。此收集最终花费的时间比帧时间长。

是否需要更长的时间,因为它扫描了所有变量&#34;分配了gc&#34;对于那些不再需要的东西?如果是这样,我将如何以垃圾收集期间不扫描的方式声明变量。我听说过&#34; GC.KeepAlive&#34;但我不确定这是否会实现这一目标。

这很遗憾,因为我做了很多工作,减少了每帧产生的垃圾量(通过使用对象池),但是gc仍在发生,并且仍然需要很长时间。

0 个答案:

没有答案