메모리 할당 및 개체 수명 데이터 값 이해Understanding Memory Allocation and Object Lifetime Data Values

Visual StudioVisual Studio 프로파일링 도구의 .NET 메모리 할당 프로파일링 방법은 할당에서 생성되었거나 가비지 수집에서 삭제된 개체 크기 및 수에 대한 정보를 수집하고 이벤트가 발생할 때 함수 호출 스택에 대한 추가 정보를 수집합니다.The .NET memory allocation profiling method of Visual StudioVisual Studio Profiling Tools collects information about the size and number of objects that were created in an allocation or destroyed in a garbage collection and additional information about the function call stack when the event occurred. 호출 스택은 프로세서에서 실행되는 함수에 대한 정보를 저장하는 동적 구조체입니다.A call stack is a dynamic structure that stores information about the functions that are executing on the processor.

요구 사항Requirements

  • Visual Studio UltimateVisual Studio Ultimate, Visual Studio PremiumVisual Studio Premium, Visual Studio ProfessionalVisual Studio Professional, Visual Studio PremiumVisual Studio Premium, Visual Studio ProfessionalVisual Studio Professional

    메모리 프로파일러는 프로파일링된 응용 프로그램에서 .NET Framework 개체를 할당할 때마다 컴퓨터 프로세서를 중단시킵니다.The memory profiler interrupts the computer processor at each allocation of a .NET Framework object in a profiled application. 개체 수명 데이터도 수집되는 경우 프로파일러는 각 .NET Framework 가비지 수집 후에 프로세서를 중단합니다.When object lifetime data is also collected, the profiler interrupts the processor after each .NET Framework garbage collection. 데이터는 프로파일링된 각 함수와 각 개체 유형에 대해 집계됩니다.The data is aggregated for each profiled function and for each type of object.

할당 데이터Allocation data

메모리 이벤트가 발생하면 할당되거나 삭제된 메모리 개체의 총 개수와 크기가 증가합니다.When a .memory event occurs, the total counts and sizes of the allocated or destroyed memory objects are incremented.

메모리 할당 이벤트가 발생하면 프로파일러는 호출 스택에서 각 함수의 샘플 개수를 증가시킵니다.When a .memory allocation event occurs, the profiler increments the sample counts for each function on the call stack. 데이터를 수집할 때는 호출 스택에서 하나의 함수만이 함수 본문의 코드를 실행하고 있는 상태입니다.When the data is collected, only one function on the call stack is currently executing the code in its function body. 스택의 다른 함수는 반환하기 위해 호출한 함수가 반환되기를 대기 중인 함수 호출 계층의 부모입니다.The other functions on the stack are parents in the hierarchy of function calls that are waiting for the functions that they called to return.

  • 할당 이벤트의 경우 프로파일러는 현재 명령을 실행 중인 함수의 전용 샘플 개수를 증가시킵니다.For the allocation event, the profiler increments the exclusive sample count of the function that is currently executing its instructions. 전용 샘플은 함수의 전체(포괄) 샘플에도 포함되므로 현재 활성 상태인 함수의 포괄 샘플 개수도 증가합니다.Because an exclusive sample is also part of the total (inclusive) samples of the function, the inclusive sample count of the currently active function is also incremented.

  • 프로파일러는 호출 스택에 있는 다른 모든 함수의 포괄 샘플 개수를 증가시킵니다.The profiler increments the inclusive sample count of all other functions on the call stack.

수명 데이터Lifetime data

.NET Framework의 가비지 수집기는 응용 프로그램의 메모리 할당 및 해제를 관리합니다.The garbage collector of the .NET Framework manages the allocation and release of memory for your application. 가비지 수집기의 성능을 최적화하기 위해 관리되는 힙은 0세대, 1세대 및 2세대의 3개 세대로 나뉩니다.To optimize the performance of the garbage collector, the managed heap is divided into three generations: 0, 1, and 2. 런타임 가비지 수집기는 0세대에서 새 개체를 저장합니다.The run-time's garbage collector stores new objects in generation 0. 수집이 완료된 후에 남아 있는 개체는 승격되어 1세대 및 2세대에 저장됩니다.Objects that survive collections are promoted and stored in generations 1 and 2.

가비지 수집기는 전체 개체 세대의 할당을 취소하여 메모리를 회수합니다.The garbage collector reclaims memory by deallocating a whole generation of objects. 프로파일링된 응용 프로그램이 만든 개체의 경우 개체 수명 뷰에는 개체의 수/크기와 해당 개체가 회수된 세대가 표시됩니다.For objects that the profiled application created, the Object Lifetime view displays the number and size of the objects and the generation when they are reclaimed.