次の方法で共有


GC.Collect メソッド

強制的にガベージ コレクションを行います。

オーバーロードの一覧

すべてのジェネレーションのガベージ コレクションを強制的に実行します。

.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();

ジェネレーション 0 から指定ジェネレーションまでのガベージ コレクションを強制的に行います。

[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);

使用例

[Visual Basic, C#, C++] メモ   ここでは、Collect のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。

 
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] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

参照

GC クラス | GC メンバ | System 名前空間