GC.Collect 메서드

정의

가비지 컬렉션을 수행하도록 합니다.Forces garbage collection.

오버로드

Collect()

모든 세대의 가비지 컬렉션을 즉시 수행합니다.Forces an immediate garbage collection of all generations.

Collect(Int32)

0세대에서 지정된 세대까지 가비지 수집을 즉시 수행합니다.Forces an immediate garbage collection from generation 0 through a specified generation.

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)

수집이 차단되어야 할지 여부를 지정하는 값을 사용하여 GCCollectionMode 값으로 지정된 시간에 0세대에서 지정된 세대까지 가비지 수집을 강제로 실행합니다.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)

컬렉션이 차단되고 압축되어야 할지 여부를 지정하는 값을 사용하여 GCCollectionMode 값으로 지정된 시간에 0세대에서 지정된 세대까지 가비지 컬렉션을 강제로 실행합니다.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()

모든 세대의 가비지 컬렉션을 즉시 수행합니다.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부터 다음 예제와 같이 Collect 메서드를 호출 하기 전에 GCSettings.LargeObjectHeapCompactionMode 속성을 GCLargeObjectHeapCompactionMode.CompactOnce로 설정 하 여 LOH (large object heap)를 압축할 수 있습니다.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)

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

가비지를 수집할 가장 오래된 세대의 수입니다.The number of the oldest generation to be garbage collected.

예외

generation가 잘못된 경우generation is not valid.

예제

다음 예제에서는 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();
            }
        }
    }
}
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)

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

가비지를 수집할 가장 오래된 세대의 수입니다.The number of the oldest generation to be garbage collected.

mode
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.

예제

다음 예제에서는 Optimized 설정을 사용 하 여 2 세대 개체에 대해 가비지 수집을 수행 합니다.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);
    }
}
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. 최대 세대를 지정 하는 경우 개체를 모두 수집 됩니다.When you specify the maximum generation, all objects are collected.

추가 정보

Collect(Int32, GCCollectionMode, Boolean)

수집이 차단되어야 할지 여부를 지정하는 값을 사용하여 GCCollectionMode 값으로 지정된 시간에 0세대에서 지정된 세대까지 가비지 수집을 강제로 실행합니다.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

가비지를 수집할 가장 오래된 세대의 수입니다.The number of the oldest generation to be garbage collected.

mode
GCCollectionMode

이 가비지의 수집 강제 (Default 또는 Forced) 또는 최적화 (Optimized) 여부를 지정하는 열거형 값입니다.An enumeration value that specifies whether the garbage collection is forced (Default or Forced) or optimized (Optimized).

blocking
Boolean

차단 가비지 수집을 수행하려면 true이고, 가능한 경우 백그라운드 가비지 수집을 수행하려면 false입니다.true 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. 백그라운드 컬렉션이 진행 중이 고 generation 0 또는 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) 메서드를 호출할 때 전체 차단 가비지 수집을 수행 하는 경우 Collect 메서드를 호출 하기 전에 GCSettings.LargeObjectHeapCompactionMode 속성을 GCLargeObjectHeapCompactionMode.CompactOnce로 설정 하 여 large object 힙을 압축할 수도 있습니다.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)

컬렉션이 차단되고 압축되어야 할지 여부를 지정하는 값을 사용하여 GCCollectionMode 값으로 지정된 시간에 0세대에서 지정된 세대까지 가비지 컬렉션을 강제로 실행합니다.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

가비지를 수집할 가장 오래된 세대의 수입니다.The number of the oldest generation to be garbage collected.

mode
GCCollectionMode

이 가비지의 수집 강제 (Default 또는 Forced) 또는 최적화 (Optimized) 여부를 지정하는 열거형 값입니다.An enumeration value that specifies whether the garbage collection is forced (Default or Forced) or optimized (Optimized).

blocking
Boolean

차단 가비지 수집을 수행하려면 true이고, 가능한 경우 백그라운드 가비지 수집을 수행하려면 false입니다.true to perform a blocking garbage collection; false to perform a background garbage collection where possible.

compacting
Boolean

작은 개체 힙을 압축 하려면 true, 비우기만 하려면 false입니다.true to compact the small object heap; false to sweep only.

설명

blocking false되 면 GC는 백그라운드 또는 차단 가비지 수집을 수행할지 여부를 결정 합니다.If blocking is false, the GC decides whether to perform a background or a blocking garbage collection. compacting true되는 경우 차단 가비지 수집을 수행 합니다.If compacting is true, it performs a blocking garbage collection.

compacting true되는 경우 런타임은 작은 개체 힙 (SOH)을 압축 합니다.If compacting is true, the runtime compacts the small object heap (SOH). GCSettings.LargeObjectHeapCompactionMode 속성이 GCLargeObjectHeapCompactionMode.CompactOnce로 설정 되지 않은 경우 LOH (large object heap)는 압축 되지 않습니다.The large object heap (LOH) is not compacted unless the GCSettings.LargeObjectHeapCompactionMode property is set to GCLargeObjectHeapCompactionMode.CompactOnce. 모든 차단 가비지 컬렉션 되지 전체 차단 가비지 컬렉션에 note 합니다.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)

compacting 인수에 대 한 true를 지정 하면 전체 차단 가비지 수집을 보장 합니다.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.

적용 대상