Share via


대기 모드

업데이트: 2007년 11월

개체를 회수하려면 가비지 수집기가 응용 프로그램의 실행 스레드를 모두 중지해야 합니다. 응용 프로그램에서 데이터를 검색하거나 내용을 표시하는 등의 일부 경우에는 중요한 시간에 완전 가비지 수집이 발생하여 성능이 저하될 수 있습니다. LatencyMode 속성을 GCLatencyMode 값 중 하나로 설정하여 가비지 수집기의 실행 시기를 조정할 수 있습니다.

대기 시간이란 가비지 수집기가 사용자 응용 프로그램의 실행을 방해하는 시간을 말합니다. 짧은 대기 시간 모드에서는 가비지 수집기가 개체를 회수할 때 보존력이 더 뛰어나고 응용 프로그램의 실행을 덜 방해합니다. 시간이 지나면서 작동 중인 응용 프로그램이 커질 수 있는 2세대 수집은 자주 발생하지 않습니다. 따라서 필요할 때 짧은 시간 동안에만 LowLatency 모드를 사용하는 것이 좋습니다. 그렇지 않으면 시스템의 메모리 사용량이 많을 경우 가비지 수집기가 응용 프로그램을 잠시 중지하고 시간 결정적 작업을 방해할 수 있는 수집을 트리거합니다.

짧은 기간 동안 실행되는 코드 블록을 포함하고 있고 런타임에 방해를 최소화한 상태에서 실행해야 하는 응용 프로그램에는 대기 모드를 사용해야 합니다. LowLatency 모드는 약간의 시간 제약 조건이 있는 시나리오에 사용하도록 설계되었지만 엄격한 실시간 제약 조건이 있는 시나리오를 위한 솔루션으로 사용하기 위한 것은 아닙니다.

다음 표에서는 각 GCLatencyMode 값이 적합한 응용 프로그램 시나리오를 보여 줍니다.

대기 모드

응용 프로그램 시나리오

Batch

UI 또는 서버측 작업이 없는 응용 프로그램

 

Interactive

UI가 있는 대부분의 응용 프로그램

LowLatency

가비지 수집기의 방해로 인한 영향을 받을 수 있는 단기간의 시간 결정적인 작업이 있는 응용 프로그램 (예: 애니메이션 렌더링이나 데이터 가져오기 기능을 수행하는 응용 프로그램)

기본 가비지 수집 모드

LatencyMode 속성이 지정되지 않은 경우 기본 모드는 동시 워크스테이션 가비지 수집입니다. 모드는 두 가지 런타임 구성 설정의 값에 따라 달라집니다.

  • <gcConcurrent>

    이 설정을 사용하면 공용 언어 런타임이 별도의 스레드에서 워크스테이션 가비지 수집을 실행하여 동시 작업이 지원됩니다. 이 설정은 기본적으로 사용됩니다.

  • <gcServer>

    이 설정을 사용하면 공용 언어 런타임이 서버 가비지 수집을 실행하고, 그렇지 않으면 워크스테이션 가비지 수집을 실행합니다. 서버 가비지 수집은 프로세서가 두 개 이상인 컴퓨터에서만 사용할 수 있습니다. 이 설정은 기본적으로 사용되지 않습니다.

    이 설정을 사용하면 <gcConcurrent>가 자동으로 해제됩니다.

GCLatencyMode의 기본값은 다음과 같습니다.

  • <gcConcurrent>가 설정되고 <gcServer>가 해제된 경우 Interactive

  • <gcConcurrent>가 해제되었거나 <gcConcurrent>와 <gcServer>가 모두 설정된 경우 Batch

참고:

이전에 IA-64라고 부르던 Intel Itanium 아키텍처를 구현하는 64비트 시스템에서 WOW64 x86 에뮬레이터를 실행하는 응용 프로그램에서는 동시 가비지 수집이 지원되지 않습니다. 64비트 Windows 시스템에서 WOW64를 사용하는 방법에 대한 자세한 내용은 Running 32-bit Applications를 참조하십시오.

짧은 대기 시간 모드 사용 지침

LowLatency 모드를 사용할 때 다음 지침을 고려하십시오.

  • 짧은 대기 시간 모드를 가능한 한 짧게 유지합니다.

  • 짧은 대기 시간 모드에서는 많은 양의 메모리를 할당하지 않습니다. 가비지 수집에 의해 회수되는 개체의 양이 적기 때문에 메모리 부족 알림이 발생할 수 있습니다.

  • 짧은 대기 시간 모드에 있을 때 특정 할당을 통한 대형 개체 힙 및 고정된 개체로의 할당 수를 최소화합니다.

  • 할당할 수 있는 스레드를 확인합니다. LatencyMode 속성 설정이 프로세스 전체에 적용되므로 할당할 수 있는 모든 스레드에 OutOfMemoryException이 생성될 수 있습니다.

  • 제약이 있는 실행 영역에 짧은 대기 시간 코드를 래핑합니다. 자세한 내용은 제약이 있는 실행 영역을 참조하십시오.

  • 짧은 대기 시간 모드에 있을 때 GC.Collect(Int32, GCCollectionMode) 메서드를 호출하여 2세대 수집을 강제로 실행할 수 있습니다.

참고 항목

작업

방법: 동시 가비지 수집 비활성화

개념

인덱싱된 컬렉션

기타 리소스

가비지 수집