다음을 통해 공유


GC.RemoveMemoryPressure(Int64) 메서드

정의

관리되지 않는 메모리가 해제되었으며 가비지 수집을 예약할 때 더 이상 고려할 필요가 없음을 런타임에 알릴 수 있습니다.

public:
 static void RemoveMemoryPressure(long bytesAllocated);
[System.Security.SecurityCritical]
public static void RemoveMemoryPressure(long bytesAllocated);
public static void RemoveMemoryPressure(long bytesAllocated);
[<System.Security.SecurityCritical>]
static member RemoveMemoryPressure : int64 -> unit
static member RemoveMemoryPressure : int64 -> unit
Public Shared Sub RemoveMemoryPressure (bytesAllocated As Long)

매개 변수

bytesAllocated
Int64

릴리스된 관리되지 않는 메모리의 양입니다.

특성

예외

bytesAllocated 가 0보다 작거나 같습니다.

-또는-

32비트 컴퓨터 bytesAllocated 의 경우 Int32.MaxValue보다 큽합니다.

설명

네이티브 리소스를 해제하는 일반적인 패턴은 형식의 종료자를 통한 것입니다. 관리되는 개체가 네이티브 메모리를 사용하는 경우 종료자에서 해당 네이티브 메모리를 해제할 수 있습니다. 가비지 수집기는 관리되는 메모리에 대해서만 알고 있으며 이 지식을 기반으로 컬렉션을 예약합니다. 작은 관리형 개체가 많은 양의 네이티브 메모리 사용과 연결되어 있고 이 관리되는 개체가 이제 gen2에 있는 시나리오를 상상해 보십시오. gen2 GC는 일정 시간 동안 발생하지 않을 수 있습니다. 즉, 다음 gen2가 발생할 때까지 많은 양의 네이티브 메모리가 해제되지 않습니다. 런타임은 이 시나리오에 AddMemoryPressure 도움이 되는 메서드와 RemoveMemoryPressure 메서드를 제공합니다. 런타임은 이러한 API가 추가 및 제거된 메모리 압력의 양에 대한 내부 레코드를 유지하고, 생산적인 것으로 간주되는 경우 gen2 GC를 트리거합니다. 따라서 이것은 GC의 기능이 아니라 런타임이 GC를 트리거하기 위해 제공하는 기능입니다.

RemoveMemoryPressure 메서드는 AddMemoryPressure 관리되지 않는 리소스를 해제하기 위해 종료자에만 의존하는 형식에 대해서만 성능을 향상시킵니다. 삭제 패턴을 따르는 형식에서는 이러한 메서드를 사용할 필요가 없습니다. 여기서 종료자는 형식의 소비자가 호출 Dispose을 잊어버린 경우에만 관리되지 않는 리소스를 정리하는 데 사용됩니다. 개체 종료 및 삭제 패턴에 대한 자세한 내용은 관리되지 않는 리소스 정리를 참조하세요.

가장 간단한 사용 패턴에서 관리되는 개체는 생성자에서 관리되지 않는 메모리를 할당하고 메서드에서 Finalize 해제합니다. AddMemoryPressure 관리되지 않는 메모리를 할당한 후 메서드를 호출하고 해제한 RemoveMemoryPressure 후 메서드를 호출합니다.

관리되는 개체의 수명 동안 관리되지 않는 메모리 할당이 크게 변경되는 더 복잡한 시나리오에서는 해당 및 RemoveMemoryPressure 메서드를 호출 AddMemoryPressure 하여 이러한 증분 변경 내용을 런타임에 전달할 수 있습니다.

주의

추가하는 압력의 양을 정확히 제거해야 합니다. 이렇게 하지 않으면 오랜 시간 동안 실행되는 애플리케이션에서 시스템의 성능에 부정적인 영향을 줄 수 있습니다.

적용 대상