메모리 압력 추가 및 제거 응용 프로그램 샘플
업데이트: 2007년 11월
이 샘플에서는 관리되는 가비지 수집과 비관리 코드와의 상호 운용성을 보여 줍니다.
샘플 사용에 대한 자세한 내용은 다음 항목을 참조하십시오.
명령 프롬프트를 사용하여 샘플을 빌드하려면
명령 프롬프트 창을 열고 GCDemo 디렉터리 아래의 언어별 하위 디렉터리 중 하나로 이동합니다. 필요한 설정 및 SDK 명령 프롬프트에 대한 자세한 내용은 방법: 샘플 설정 변경을 참조하십시오.
선택한 프로그래밍 언어에 따라 명령줄에서 msbuild GCDemoCS.sln 또는 msbuild GCDemoVB.sln을 입력합니다.
Visual Studio를 사용하여 샘플을 빌드하려면
Windows 탐색기를 열고 GCDemo 디렉터리 아래의 언어별 하위 디렉터리 중 하나로 이동합니다.
선택한 프로그래밍 언어에 따라 GCDemoCS.sln 또는 GCDemoVB.sln 파일을 두 번 클릭하여 Visual Studio에서 엽니다.
빌드 메뉴에서 솔루션 빌드를 선택합니다.
이 샘플을 실행하려면
- 명령 프롬프트 창을 열고, 새 실행 파일이 들어 있는 디렉터리로 이동합니다.
요구 사항
Microsoft Visual Studio 2005를 사용하여 Visual Studio 2005 명령 프롬프트를 빌드하는 경우 또는 Platform SDK가 포함 경로에 설치 및 지정된 경우 이러한 샘플에는 프로젝트에 사용할 수 있는 Windows 헤더가 필요합니다.
설명
이 샘플에서는 GC 클래스의 새로운 메서드인 AddMemoryPressure 및 RemoveMemoryPressure 메서드를 보여 줍니다. 이 메서드를 사용하여 0세대 수집에 대한 가비지 수집 전략 패턴을 변경할 수 있습니다. 할당되는 관리되지 않는 리소스의 개수가 동일한 리소스에 대해 관리되는 크기보다 아주 클 경우에는 항상 이 메서드를 사용하여 GC(가비지 수집기)에 힌트를 지정해야 합니다. 이 힌트가 없으면 GC가 관리되지 않는 메모리를 알지 못하므로 최적의 수집 전략을 선택할 수 없게 됩니다.
샘플을 실행하고 메모리 압축을 사용하거나 사용하지 않은 상태에서 성공적으로 할당된 수를 확인해 보면 메모리 압축을 적절하게 추가한 경우 할당 성공률이 높다는 것을 알 수 있습니다. 또한 메모리 압축 추가와 0세대 수집이 수행되는 횟수 간의 관계, 즉 압축을 추가하면 GC에서 수집이 몇 차례 더 수행되는 것을 확인하십시오.
압축을 추가할 때는 동일한 크기의 압축을 적절히 제거하여 압축 크기를 항상 일정하게 유지해야 합니다.