是的,可以通过调用Collect()方法强制在C#中运行垃圾收集器
这不是一个好习惯,因为这可能会产生较高的性能。Collect()强制立即进行所有世代的垃圾收集。
Collect(Int32)强制从第0代到指定的世代立即进行垃圾回收。
using System;
class MyGCCollectClass{
private const int maxGarbage = 1000;
static void Main(){
//将一些对象放在内存中。
MyGCCollectClass.MakeSomeGarbage();
Console.WriteLine("Memory used before collection: {0:N0}",
GC.GetTotalMemory(false));
//收集所有世代的记忆。
GC.Collect();
Console.WriteLine("Memory used after full collection: {0:N0}",
GC.GetTotalMemory(true));
}
static void MakeSomeGarbage(){
Version vt;
//创建对象并释放它们以用未使用的对象填充内存。
for(int i = 0; i < maxGarbage; i++){
vt = new Version();
}
}
}