Version: 6000.3
语言: 中文
垃圾回收模式
跟踪垃圾回收分配

配置垃圾回收

默认情况下,Unity 以增量方式执行垃圾回收。如果您想更好地控制垃圾回收的时间和方式,您可以使用以下选项:

禁用增量垃圾回收

要禁用增量垃圾回收,请执行以下作:

  1. 打开 项目设置(Project Settings) 窗口(编辑(Edit) > 项目设置(Project Settings)
  2. 导航到配置设置(播放器>其他设置>配置)
  3. 禁用使用增量 GC 复选框。

增量垃圾回收在大多数 Unity 项目中都很有用,尤其是在项目存在垃圾回收峰值的情况下。但是,增量垃圾回收会为更改引用的任何调用添加写入障碍,因此,如果您的项目未在性能关键部分触发垃圾回收,则可能需要禁用它。在这种情况下禁用增量垃圾回收可以提高项目中脚本代码的性能。

使用探查器验证应用程序是否按预期执行。如果您分析分析器帮助您优化游戏的窗口。它显示了在游戏的各个领域花费了多少时间。例如,它可以报告渲染、动画制作或游戏逻辑所花费的时间百分比。更多信息
请参阅术语表
单独捕获,可能很难找出增量垃圾回收如何影响性能。最佳做法是分析同一性能关键部分两次:一次启用增量垃圾回收,一次禁用增量垃圾回收。然后,您可以将两个 Profiler 捕获与 Profile Analyzer 包进行比较。对于 CPU 绑定项目,每帧的差异可能高达 1 毫秒。

有关禁用垃圾回收的更多信息,请参阅垃圾回收模式

使用 GarbageCollector API

您可以使用GarbageCollector类来手动控制垃圾收集器,或完全禁用它。您可以使用以下 API 来控制垃圾回收器:

禁用垃圾回收器

要完全禁用垃圾回收器,请将GarbageCollector.GCModeDisabled.禁用垃圾回收器时,Unity 不会执行任何垃圾回收。叫System.GC.Collect没有效果,也不会启动集合。

禁用垃圾回收器可以防止 CPU 峰值,但应用程序的内存使用量永远不会减少,因为垃圾回收器不会收集不再具有任何引用的对象。

禁用垃圾回收器需要仔细的内存管理。如果不仔细管理内存,托管堆会不断扩展,直到应用程序内存耗尽,并且作系统会将其关闭。

理想情况下,应在禁用垃圾回收器之前分配所有内存,并避免在禁用垃圾回收器时进行额外分配。

手动运行垃圾回收器

要禁用自动垃圾回收并手动选择何时运行它,请将GarbageCollector.GCModeManual.

这将禁用垃圾回收器的自动调用,但仍允许您手动执行垃圾回收。手动收集可让您控制收集的时间,因此您可以微调内容的流畅度或内存使用情况。调用System.GC.Collect对于完整的阻塞集合,或GarbageCollector.CollectIncremental执行增量垃圾回收。

其他资源

垃圾回收模式
跟踪垃圾回收分配