如何在 C# 中强制垃圾收集?

csharpserver side programmingprogramming更新于 2025/4/17 18:52:17

是的,可以通过调用 Collect() 方法强制运行 C# 中的垃圾收集器

这不被认为是一种好的做法,因为这可能会造成性能开销。 Collect() 强制立即对所有代进行垃圾收集。

Collect(Int32)强制立即从第 0 代到指定代进行垃圾收集。

示例

using System;
class MyGCCollectClass{
   private const int maxGarbage = 1000;
   static void Main(){
      // 将一些对象放入内存。
      MyGCCollectClass.MakeSomeGarbage();
      Console.WriteLine("收集前使用的内存:{0:N0}",
      GC.GetTotalMemory(false));
      // 收集所有代的内存。
      GC.Collect();
      Console.WriteLine("完全收集后使用的内存:{0:N0}",
      GC.GetTotalMemory(true));
   }
   static void MakeSomeGarbage(){
      Version vt;
      // 创建对象并释放它们,以用未使用的对象填充内存。
      for(int i = 0; i < maxGarbage; i++){
         vt = new Version();
      }
   }
}

相关文章