【问题标题】:Sequence of GC and unloading assets in Unity3DUnity3D中GC和卸载资产的顺序
【发布时间】:2013-07-06 11:45:15
【问题描述】:

有时我们需要在游戏开发中手动释放无用资源。 但我不确定哪个更好

System.GC.Collect();
Resources.UnloadUnusedAssets();

Resources.UnloadUnusedAssets();
System.GC.Collect();

AFAIK,它们都是异步操作,可能没有区别。

所以我的问题是......

  1. 有什么区别吗?
  2. 如果是这样,哪个更好?

【问题讨论】:

  • UnloadUnusedAsset 是异步的,但实际上你可以让步等待它结束。

标签: c# memory-management garbage-collection unity3d


【解决方案1】:

作为unity guy saidUnloadUnusedAssets里面也调用System.GC.Collect();所以如果你调用 UnloadUnusedAssets,你不需要调用 System.GC.Collect

【讨论】:

    【解决方案2】:

    这两种没有区别。

    System.GC.Collect() 将告诉 .Net 收集器收集托管堆中由 mono 管理的对象,而 Resources.UnloadUnusedAssets 处理放置在本机堆中的资产(纹理、声音和其他媒体)。这两种方法做的事情完全不同,所以先执行哪一个没有区别。 (正如您所说,它们都是异步的,您只需设置一个标志来建议系统可能是进行收集的好时机。)

    其实,自己调用 GC collect 并不常见,除非你有充分的理由。系统的 GC 会在适当的时候工作,大多数强制垃圾回收的调用并不像你想象的那么必要。

    如果你对Unity的内存有更多的疑惑,可以参考this blog,可以详细的告诉你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      相关资源
      最近更新 更多