GC.Collect Method
.NET Framework 1.1
Forces garbage collection.
Overload List
Forces garbage collection of all generations.
Supported by the .NET Compact Framework.
[Visual Basic] Overloads Public Shared Sub Collect()
[C#] public static void Collect();
[C++] public: static void Collect();
[JScript] public static function Collect();
Forces garbage collection from generation zero through a specified generation.
[Visual Basic] Overloads Public Shared Sub Collect(Integer)
[C#] public static void Collect(int);
[C++] public: static void Collect(int);
[JScript] public static function Collect(int);
Example
[Visual Basic, C#, C++] Note This example shows how to use one of the overloaded versions of Collect. For other examples that might be available, see the individual overload topics.
[Visual Basic] Imports System Namespace GCCollectInt_Example Class MyGCCollectClass Private maxGarbage As Long = 10000 Public Shared Sub Main() Dim myGCCol As New MyGCCollectClass 'Determine the maximum number of generations the system 'garbage collector currently supports. Console.WriteLine("The highest generation is {0}", GC.MaxGeneration) myGCCol.MakeSomeGarbage() 'Determine which generation myGCCol object is stored in. Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol)) 'Determine the best available approximation of the number 'of bytes currently allocated in managed memory. Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(False)) 'Perform a collection of generation 0 only. GC.Collect(0) 'Determine which generation myGCCol object is stored in. Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol)) Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(False)) 'Perform a collection of generation 2 only. GC.Collect(2) 'Determine which generation myGCCol object is stored in. Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol)) Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(False)) Console.Read() End Sub Sub MakeSomeGarbage() Dim vt As Version Dim i As Integer For i = 0 To maxGarbage - 1 'Create objects and release them to fill up memory 'with unused objects. vt = New Version Next i End Sub End Class End Namespace [C#] using System; namespace GCCollectIntExample { class MyGCCollectClass { private const long maxGarbage = 1000; static void Main() { MyGCCollectClass myGCCol = new MyGCCollectClass(); // Determine the maximum number of generations the system // garbage collector currently supports. Console.WriteLine("The highest generation is {0}", GC.MaxGeneration); myGCCol.MakeSomeGarbage(); // Determine which generation myGCCol object is stored in. Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol)); // Determine the best available approximation of the number // of bytes currently allocated in managed memory. Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false)); // Perform a collection of generation 0 only. GC.Collect(0); // Determine which generation myGCCol object is stored in. Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol)); Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false)); // Perform a collection of generation 2 only. GC.Collect(2); // Determine which generation myGCCol object is stored in. Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol)); Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false)); Console.Read(); } void MakeSomeGarbage() { Version vt; for(int i = 0; i < maxGarbage; i++) { // Create objects and release them to fill up memory // with unused objects. vt = new Version(); } } } } [C++] #using <mscorlib.dll> using namespace System; const long maxGarbage = 1000; __gc class MyGCCollectClass { public: void MakeSomeGarbage() { Version* vt; for (int i = 0; i < maxGarbage; i++) { // Create objects and release them to fill up memory // with unused objects. vt = new Version(); } } }; int main() { MyGCCollectClass* myGCCol = new MyGCCollectClass(); // Determine the maximum number of generations the system // garbage collector currently supports. Console::WriteLine(S"The highest generation is {0}", __box(GC::MaxGeneration)); myGCCol->MakeSomeGarbage(); // Determine which generation myGCCol object is stored in. Console::WriteLine(S"Generation: {0}", __box(GC::GetGeneration(myGCCol))); // Determine the best available approximation of the number // of bytes currently allocated in managed memory. Console::WriteLine(S"Total Memory: {0}", __box(GC::GetTotalMemory(false))); // Perform a collection of generation 0 only. GC::Collect(0); // Determine which generation myGCCol object is stored in. Console::WriteLine(S"Generation: {0}", __box(GC::GetGeneration(myGCCol))); Console::WriteLine(S"Total Memory: {0}", __box(GC::GetTotalMemory(false))); // Perform a collection of generation 2 only. GC::Collect(2); // Determine which generation myGCCol object is stored in. Console::WriteLine(S"Generation: {0}", __box(GC::GetGeneration(myGCCol))); Console::WriteLine(S"Total Memory: {0}", __box(GC::GetTotalMemory(false))); }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.