GC.Collect GC.Collect GC.Collect GC.Collect Method

定義

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

オーバーロード

Collect() Collect() Collect() Collect()

すべてのジェネレーションのガベージ コレクションを直ちに強制実行します。Forces an immediate garbage collection of all generations.

Collect(Int32) Collect(Int32) Collect(Int32) Collect(Int32)

ジェネレーション 0 から指定ジェネレーションまでのガベージ コレクションを直ちに強制実行します。Forces an immediate garbage collection from generation 0 through a specified generation.

Collect(Int32, GCCollectionMode) Collect(Int32, GCCollectionMode) Collect(Int32, GCCollectionMode) Collect(Int32, GCCollectionMode)

GCCollectionMode 値によって指定したタイミングで、ジェネレーション 0 から指定ジェネレーションまでのガベージ コレクションを強制的に実行します。Forces a garbage collection from generation 0 through a specified generation, at a time specified by a GCCollectionMode value.

Collect(Int32, GCCollectionMode, Boolean) Collect(Int32, GCCollectionMode, Boolean) Collect(Int32, GCCollectionMode, Boolean) Collect(Int32, GCCollectionMode, Boolean)

ジェネレーション 0 から指定ジェネレーションまでのガベージ コレクションを、 GCCollectionMode 値で指定したタイミングで強制実行します。コレクションをブロックする必要があるかどうかを指定する値を指定します。Forces a garbage collection from generation 0 through a specified generation, at a time specified by a GCCollectionMode value, with a value specifying whether the collection should be blocking.

Collect(Int32, GCCollectionMode, Boolean, Boolean) Collect(Int32, GCCollectionMode, Boolean, Boolean) Collect(Int32, GCCollectionMode, Boolean, Boolean) Collect(Int32, GCCollectionMode, Boolean, Boolean)

ジェネレーション 0 から指定ジェネレーションまでのガベージ コレクションを、 GCCollectionMode 値で指定したタイミングで強制実行します。コレクションをブロックおよび圧縮する必要があるかどうかを指定する値を指定します。Forces a garbage collection from generation 0 through a specified generation, at a time specified by a GCCollectionMode value, with values that specify whether the collection should be blocking and compacting.

Collect() Collect() Collect() Collect()

すべてのジェネレーションのガベージ コレクションを直ちに強制実行します。Forces an immediate garbage collection of all generations.

public:
 static void Collect();
public static void Collect ();
static member Collect : unit -> unit
Public Shared Sub Collect ()

次の例では、使用する方法、Collectメモリのすべてのジェネレーションのコレクションを実行するメソッド。The following example demonstrates how to use the Collect method to perform a collection on all generations of memory. コードが使用されていないオブジェクトは、数を生成しを呼び出して、Collectメソッドをメモリから消去します。The code generates a number of unused objects, and then calls the Collect method to clean them from memory.

using namespace System;

const int maxGarbage = 1000;

void MakeSomeGarbage()
{
   Version^ vt;
   for ( int i = 0; i < maxGarbage; i++ ) {
      // Create objects and release them to fill up memory with unused objects.
      vt = gcnew Version;
   }
}

void main()
{
   // Put some objects in memory.
   MakeSomeGarbage();
   Console::WriteLine("Memory used before collection:       {0:N0}", 
                      GC::GetTotalMemory( false ) );
   
   // Collect all generations of memory.
   GC::Collect();
   Console::WriteLine("Memory used after full collection:   {0:N0}", 
                      GC::GetTotalMemory( true ) );
}
// The output from the example resembles the following:
//       Memory used before collection:       79,392
//       Memory used after full collection:   52,640
using System;

class MyGCCollectClass
{
   private const int maxGarbage = 1000;

   static void Main()
   {
      // Put some objects in memory.
      MyGCCollectClass.MakeSomeGarbage();
      Console.WriteLine("Memory used before collection:       {0:N0}", 
                        GC.GetTotalMemory(false));
      
      // Collect all generations of memory.
      GC.Collect();
      Console.WriteLine("Memory used after full collection:   {0:N0}", 
                        GC.GetTotalMemory(true));
   }

   static void MakeSomeGarbage()
   {
      Version vt;

      // Create objects and release them to fill up memory with unused objects.
      for(int i = 0; i < maxGarbage; i++) {
         vt = new Version();
      }
   }
}
// The output from the example resembles the following:
//       Memory used before collection:       79,392
//       Memory used after full collection:   52,640
Class MyGCCollectClass
     Private Const maxGarbage As Integer = 1000

     Shared Sub Main()
         'Put some objects in memory.
         MyGCCollectClass.MakeSomeGarbage()
         Console.WriteLine("Memory used before collection:       {0:N0}", 
                           GC.GetTotalMemory(False))

         'Collect all generations of memory.
         GC.Collect()
         Console.WriteLine("Memory used after full collection:   {0:N0}", 
                           GC.GetTotalMemory(True))
     End Sub

     Shared 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 
     End Sub
 End Class
' The output from the example resembles the following:
'       Memory used before collection:       79,392
'       Memory used after full collection:   52,640

注釈

このメソッドを使用して、アクセスできるすべてのメモリを解放しようとしてください。Use this method to try to reclaim all memory that is inaccessible. すべてのジェネレーションのブロッキング ガベージ コレクションが実行します。It performs a blocking garbage collection of all generations.

コレクションはどのくらいの時間が長かった、メモリ内に関係なく、すべてのオブジェクトと見なされますただし、マネージ コードで参照されるオブジェクトは収集されません。All objects, regardless of how long they have been in memory, are considered for collection; however, objects that are referenced in managed code are not collected. 使用可能なメモリの最大量を再利用しようとするのにシステムを強制するのにには、このメソッドを使用します。Use this method to force the system to try to reclaim the maximum amount of available memory.

以降では、 .NET Framework 4.5.1.NET Framework 4.5.1、大きなオブジェクト ヒープ (LOH) を設定して圧縮することができます、GCSettings.LargeObjectHeapCompactionModeプロパティをGCLargeObjectHeapCompactionMode.CompactOnce呼び出す前に、Collectメソッドでは、次の例として示します。Starting with the .NET Framework 4.5.1.NET Framework 4.5.1, you can compact the large object heap (LOH) by setting the GCSettings.LargeObjectHeapCompactionMode property to GCLargeObjectHeapCompactionMode.CompactOnce before calling the Collect method, as the following example illustrates.

GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect();      
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
GC.Collect()      
こちらもご覧ください

Collect(Int32) Collect(Int32) Collect(Int32) Collect(Int32)

ジェネレーション 0 から指定ジェネレーションまでのガベージ コレクションを直ちに強制実行します。Forces an immediate garbage collection from generation 0 through a specified generation.

public:
 static void Collect(int generation);
public static void Collect (int generation);
static member Collect : int -> unit
Public Shared Sub Collect (generation As Integer)

パラメーター

generation
Int32 Int32 Int32 Int32

ガベージ コレクションを行うべき最も古いジェネレーションの番号。The number of the oldest generation to be garbage collected.

例外

次の例では、使用する方法、Collectメモリの個々 のレイヤーのコレクションを実行するメソッド。The following example demonstrates how to use the Collect method to perform a collection on individual layers of memory. コードが使用されていないオブジェクトは、数を生成しを呼び出して、Collectメソッドをメモリから消去します。The code generates a number of unused objects, and then calls the Collect method to clean them from memory.

using namespace System;
const long maxGarbage = 1000;
ref 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 = gcnew Version;

      }
   }

};

int main()
{
   MyGCCollectClass^ myGCCol = gcnew 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 all generations up to and including 2.
   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 ) );
}

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 all generations up to and including 2.
            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();
            }
        }
    }
}
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 all generations up to and including 2.
            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

注釈

このメソッドを使用して、アクセスできないメモリの解放を試みます。Use this method to try to reclaim memory that is inaccessible. ただし、このメソッドを使用していないわけでは指定したジェネレーション内のすべてのアクセスできないメモリが解放されること。However, using this method does not guarantee that all inaccessible memory in the specified generation is reclaimed.

世代番号のオブジェクトはガベージ コレクターによって収集しないオブジェクトの世代が実装されている場合、指定された世代より高い。If object aging is implemented, the garbage collector does not collect objects with a generation number that is higher than the specified generation. オブジェクトの世代が実装されていない場合、ガベージ コレクターはガベージ コレクション中にすべてのオブジェクトと見なします。If object aging is not implemented, the garbage collector considers all objects during the garbage collection.

使用して、MaxGenerationプロパティの最大有効値を決定する、generationパラメーター。Use the MaxGeneration property to determine the maximum valid value of the generation parameter.

ガベージ コレクターがその世代に関係なくすべてのオブジェクトには、このパラメーターをとらないメソッドのバージョンを使用します。To have the garbage collector consider all objects regardless of their generation, use the version of this method that takes no parameters. に基づいてオブジェクトの再利用、ガベージ コレクターが、GCCollectionMode設定を使用して、GC.Collect(Int32, GCCollectionMode)メソッドのオーバー ロードします。To have the garbage collector reclaim objects based on a GCCollectionMode setting, use the GC.Collect(Int32, GCCollectionMode) method overload.

こちらもご覧ください

Collect(Int32, GCCollectionMode) Collect(Int32, GCCollectionMode) Collect(Int32, GCCollectionMode) Collect(Int32, GCCollectionMode)

GCCollectionMode 値によって指定したタイミングで、ジェネレーション 0 から指定ジェネレーションまでのガベージ コレクションを強制的に実行します。Forces a garbage collection from generation 0 through a specified generation, at a time specified by a GCCollectionMode value.

public:
 static void Collect(int generation, GCCollectionMode mode);
public static void Collect (int generation, GCCollectionMode mode);
static member Collect : int * GCCollectionMode -> unit
Public Shared Sub Collect (generation As Integer, mode As GCCollectionMode)

パラメーター

generation
Int32 Int32 Int32 Int32

ガベージ コレクションを行うべき最も古いジェネレーションの番号。The number of the oldest generation to be garbage collected.

mode
GCCollectionMode GCCollectionMode GCCollectionMode GCCollectionMode

ガベージ コレクションが強制実行になっている (Default または Forced) か、最適化になっている (Optimized) かを示す列挙値。An enumeration value that specifies whether the garbage collection is forced (Default or Forced) or optimized (Optimized).

例外

generation が無効です。generation is not valid.

または-or- modeGCCollectionMode 値のいずれでもありません。mode is not one of the GCCollectionMode values.

次の例には、第 2 世代のオブジェクトをガベージ コレクションが強制実行、Optimized設定します。The following example forces a garbage collection for generation 2 objects with the Optimized setting.

using System;

class Program
{
    static void Main(string[] args)
    {
        GC.Collect(2, GCCollectionMode.Optimized);
    }
}
Imports System

Class Program

    Public Shared Sub Main()
        GC.Collect(2, GCCollectionMode.Optimized)
    End Sub
End Class

注釈

使用して、modeかどうかガベージ コレクションが発生のみまたはすぐに時間は、オブジェクトの再利用する最適なかどうかを指定するパラメーター。Use the mode parameter to specify whether garbage collection should occur immediately or only if the time is optimal to reclaim objects. このメソッドを使用しても、指定したジェネレーション内のすべてのアクセスできないメモリが解放されることとは限りません。Using this method does not guarantee that all inaccessible memory in the specified generation is reclaimed.

アプリケーションで重要な期間中にガベージ コレクションの割り込みの動作を調整する設定、LatencyModeプロパティ。To adjust the intrusiveness of garbage collection during critical periods in your application, set the LatencyMode property.

ガベージ コレクターはジェネレーションの番号で指定されている上位のオブジェクトを収集しません、generationパラメーター。The garbage collector does not collect objects with a generation number higher than specified by the generation parameter. 使用して、MaxGenerationプロパティの最大有効値を決定するgenerationします。Use the MaxGeneration property to determine the maximum valid value of generation.

ガベージ コレクターがその世代に関係なくすべてのオブジェクトには、このパラメーターをとらないメソッドのバージョンを使用します。To have the garbage collector consider all objects regardless of their generation, use the version of this method that takes no parameters.

オブジェクトの指定ジェネレーションまでのオブジェクトの再利用、使用して、ガベージ コレクターが、GC.Collect(Int32)メソッドのオーバー ロードします。To have the garbage collector reclaim objects up to a specified generation of objects, use the GC.Collect(Int32) method overload. Generation の最大値を指定する場合は、すべてのオブジェクトが収集されます。When you specify the maximum generation, all objects are collected.

こちらもご覧ください

Collect(Int32, GCCollectionMode, Boolean) Collect(Int32, GCCollectionMode, Boolean) Collect(Int32, GCCollectionMode, Boolean) Collect(Int32, GCCollectionMode, Boolean)

ジェネレーション 0 から指定ジェネレーションまでのガベージ コレクションを、 GCCollectionMode 値で指定したタイミングで強制実行します。コレクションをブロックする必要があるかどうかを指定する値を指定します。Forces a garbage collection from generation 0 through a specified generation, at a time specified by a GCCollectionMode value, with a value specifying whether the collection should be blocking.

public:
 static void Collect(int generation, GCCollectionMode mode, bool blocking);
public static void Collect (int generation, GCCollectionMode mode, bool blocking);
static member Collect : int * GCCollectionMode * bool -> unit
Public Shared Sub Collect (generation As Integer, mode As GCCollectionMode, blocking As Boolean)

パラメーター

generation
Int32 Int32 Int32 Int32

ガベージ コレクションを行うべき最も古いジェネレーションの番号。The number of the oldest generation to be garbage collected.

mode
GCCollectionMode GCCollectionMode GCCollectionMode GCCollectionMode

ガベージ コレクションが強制実行になっている (Default または Forced) か、最適化になっている (Optimized) かを示す列挙値。An enumeration value that specifies whether the garbage collection is forced (Default or Forced) or optimized (Optimized).

blocking
Boolean Boolean Boolean Boolean

ブロッキング ガベージ コレクションを実行する場合は true。可能な限りバックグラウンド ガベージ コレクションを実行する場合は falsetrue to perform a blocking garbage collection; false to perform a background garbage collection where possible.

例外

generation が無効です。generation is not valid.

- または --or- modeGCCollectionMode 値のいずれでもありません。mode is not one of the GCCollectionMode values.

注釈

次の表の相互作用をまとめたものです、modeblockingパラメーター。The following table summarizes the interaction of the mode and blocking parameters:

mode blockingtrue ですblocking is true blockingfalse ですblocking is false
Forced または DefaultForced or Default ブロッキング コレクションはできるだけ早く実行されます。A blocking collection is performed as soon as possible. バック グラウンド コレクションが進行中の場合とgeneration0 または 1 の場合は、Collect(Int32, GCCollectionMode, Boolean)メソッドは直ちにブロッキング コレクションをトリガーし、コレクションが完了したらを返します。If a background collection is in progress and generation is 0 or 1, the Collect(Int32, GCCollectionMode, Boolean) method immediately triggers a blocking collection and returns when the collection is finished. バック グラウンド コレクションが進行中の場合とgenerationが 2 で、メソッドを待機するまで、バック グラウンド コレクションが完了したら、ジェネレーション 2 のブロッキング コレクションでは、トリガーおよびを返します。If a background collection is in progress and generation is 2, the method waits until the background collection is finished, triggers a blocking generation 2 collection, and then returns. コレクションはできるだけ早く実行されます。A collection is performed as soon as possible. Collect(Int32, GCCollectionMode, Boolean) メソッドはバックグラウンド コレクションを要求しますが、それは保証されず、状況によってはブロッキング コレクションが実行される場合もあります。The Collect(Int32, GCCollectionMode, Boolean) method requests a background collection, but this is not guaranteed; depending on the circumstances, a blocking collection may still be performed. バックグラウンド コレクションが既に実行中の場合、メソッドはすぐに制御を返します。If a background collection is already in progress, the method returns immediately.
Optimized ガベージ コレクターおよび generation パラメーターの状態によっては、ブロッキング コレクションが実行される場合があります。A blocking collection may be performed, depending on the state of the garbage collector and the generation parameter. ガベージ コレクターは最適なパフォーマンスを提供しようとします。The garbage collector tries to provide optimal performance. ガベージ コレクターの状態によっては、コレクションが実行される場合があります。A collection may be performed, depending on the state of the garbage collector. Collect(Int32, GCCollectionMode, Boolean) メソッドはバックグラウンド コレクションを要求しますが、それは保証されず、状況によってはブロッキング コレクションが実行される場合もあります。The Collect(Int32, GCCollectionMode, Boolean) method requests a background collection, but this is not guaranteed; depending on the circumstances, a blocking collection may still be performed. ガベージ コレクターは最適なパフォーマンスを提供しようとします。The garbage collector tries to provide optimal performance. バックグラウンド コレクションが既に実行中の場合、メソッドはすぐに制御を返します。If a background collection is already in progress, the method returns immediately.

呼び出し、Collect(Int32, GCCollectionMode, Boolean)メソッドがフル ブロッキング ガベージ コレクションを実行する設定して、大きなオブジェクト ヒープを圧縮することもできます、GCSettings.LargeObjectHeapCompactionModeプロパティをGCLargeObjectHeapCompactionMode.CompactOnce呼び出す前に、Collectメソッド。If a call to the Collect(Int32, GCCollectionMode, Boolean) method performs a full blocking garbage collection, you can also compact the large object heap by setting the GCSettings.LargeObjectHeapCompactionMode property to GCLargeObjectHeapCompactionMode.CompactOnce before calling the Collect method.

Collect(Int32, GCCollectionMode, Boolean, Boolean) Collect(Int32, GCCollectionMode, Boolean, Boolean) Collect(Int32, GCCollectionMode, Boolean, Boolean) Collect(Int32, GCCollectionMode, Boolean, Boolean)

ジェネレーション 0 から指定ジェネレーションまでのガベージ コレクションを、 GCCollectionMode 値で指定したタイミングで強制実行します。コレクションをブロックおよび圧縮する必要があるかどうかを指定する値を指定します。Forces a garbage collection from generation 0 through a specified generation, at a time specified by a GCCollectionMode value, with values that specify whether the collection should be blocking and compacting.

public:
 static void Collect(int generation, GCCollectionMode mode, bool blocking, bool compacting);
public static void Collect (int generation, GCCollectionMode mode, bool blocking, bool compacting);
static member Collect : int * GCCollectionMode * bool * bool -> unit
Public Shared Sub Collect (generation As Integer, mode As GCCollectionMode, blocking As Boolean, compacting As Boolean)

パラメーター

generation
Int32 Int32 Int32 Int32

ガベージ コレクションを行うべき最も古いジェネレーションの番号。The number of the oldest generation to be garbage collected.

mode
GCCollectionMode GCCollectionMode GCCollectionMode GCCollectionMode

ガベージ コレクションが強制実行になっている (Default または Forced) か、最適化になっている (Optimized) かを示す列挙値。An enumeration value that specifies whether the garbage collection is forced (Default or Forced) or optimized (Optimized).

blocking
Boolean Boolean Boolean Boolean

ブロッキング ガベージ コレクションを実行する場合は true。可能な限りバックグラウンド ガベージ コレクションを実行する場合は falsetrue to perform a blocking garbage collection; false to perform a background garbage collection where possible.

compacting
Boolean Boolean Boolean Boolean

小さなオブジェクト ヒープの圧縮を行う場合は true、スイープのみ行う場合は falsetrue to compact the small object heap; false to sweep only.

注釈

場合blockingfalseGC は、バック グラウンドまたはブロッキング ガベージ コレクションを実行するかどうかを決定します。If blocking is false, the GC decides whether to perform a background or a blocking garbage collection. 場合compactingtrue、ブロッキング ガベージ コレクションを実行します。If compacting is true, it performs a blocking garbage collection.

場合compactingtrueランタイムが、小さなオブジェクト ヒープ (SOH) を圧縮します。If compacting is true, the runtime compacts the small object heap (SOH). しない限り、大きなオブジェクト ヒープ (LOH) は圧縮されません、GCSettings.LargeObjectHeapCompactionModeプロパティに設定されてGCLargeObjectHeapCompactionMode.CompactOnceします。The large object heap (LOH) is not compacted unless the GCSettings.LargeObjectHeapCompactionMode property is set to GCLargeObjectHeapCompactionMode.CompactOnce. すべてブロッキング ガベージ コレクション、いないだけフル ブロッキング ガベージ コレクションを含むことに注意してください。Note that this includes all blocking garbage collections, not just full blocking garbage collections.

呼び出すことができます、Collect(Int32, GCCollectionMode, Boolean, Boolean)メソッドに次のコード フラグメントに示すように、マネージ ヒープを最小サイズできるに減らします。You can call the Collect(Int32, GCCollectionMode, Boolean, Boolean) method to reduce the managed heap to the smallest size possible, as the following code fragment illustrates.

GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect(2, GCCollectionMode.Forced, true, true);
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
GC.Collect(2, GCCollectionMode.Forced, True, True)

指定するtruecompacting引数は、圧縮、フル ブロッキング ガベージ コレクションを保証します。Specifying true for the compacting argument guarantees a compacting, full blocking garbage collection. 設定、GCSettings.LargeObjectHeapCompactionModeプロパティをGCLargeObjectHeapCompactionMode.CompactOnceにより、LOH と SOH を最適化します。Setting the GCSettings.LargeObjectHeapCompactionMode property to GCLargeObjectHeapCompactionMode.CompactOnce ensures that both the LOH and SOH are compacted.

適用対象