Overview

Results View ›› Analyzing Memory Profiling Results ››

Memory Overview



The memory overview page shows the total memory usage of the target process and breaks down memory consumption by category, including details for the managed heap:


Category

Description

Managed Heap

Heap for managed objects (SOH, LOH), LoaderHeap (jitted code, method tables)

Heap

Win32 Heap typically used for CRT allocations (APIs: malloc/realloc, new, etc.)

Image

Modules (exe files and DLLs) , typically executable code & data

Mapped File

File-backed-sections: Memory mapped, resource files, fonts etc.

Shareable

Page-file-backed-sections: Shared memory

Stack

Memory required for the target processes thread stacks

Profiler-Heap

Memory regions used by the profiler (profiler overhead)

Other

Other private memory



The toolbar provides the following operations:



Operation

Description

Force GC

Induces a garbage collection in the target process

Group By Allocation Base


Show Reserved

Includes reserved memory which is not yet committed and might be required later for higher memory demands.

Stacks: The reserved memory size represents the total stack allocation in virtual memory. Stacks can grow up to the reserve limit minus 1K guard page, which then triggers a stack overflow exception.

Managed Heap: When the GC allocates a new heap segment, the memory is reserved for that segment but will be committed only when needed. Thus, the total reserved bytes can be bigger than the total committed bytes.

Show Profiler-Heap

Includes the memory regions used by the profiler (profiler overhead)

Show Free

Shows the free, unused memory regions



Below the toolbar you can find the aggregated total memory usage stats:

  1. Memory Usage: Including shared memory (images, mapped files). By default: Reserved memory is excluded to focus on real consumption, see operations.
  2. Private: Excluding shared memory to focus on private memory which cannot be shared across processes.


The pie chart on the left which displays the memory category breakdown can be used to focus on a particular category such as managed heap. Simply double click on the category and the detail view will be updated with the selected filter. Furthermore the instant filter can be used to filter on interesting memory regions, such as Large* to find all Large Object Heaps (LOH).


The detail view on the right contains the following information:

 

Column Name

Description

Base Address

Start address of the memory region

Allocation Base

A pointer to the base address of a range of pages allocated by the VirtualAlloc function. The page pointed to by the BaseAddress member is contained within this allocation range.

Size

Size (bytes) of the memory region

Protect

PAGE_EXECUTE: Enables execute access to the committed region of pages. An attempt to write to the committed region results in an access violation.


PAGE_EXECUTE_READ: Enables execute or read-only access to the committed region of pages. An attempt to write to the committed region results in an access violation.


PAGE_EXECUTE_READWRITE: Enables execute, read-only, or read/write access to the committed region of pages.


PAGE_EXECUTE_WRITECOPY: Enables execute, read-only, or copy-on-write access to a mapped view of a file mapping object. An attempt to write to a committed copy-on-write page results in a private copy of the page being made for the process. The private page is marked as PAGE_EXECUTE_READWRITE, and the change is written to the new page.


PAGE_NOACCESS: Disables all access to the committed region of pages. An attempt to read from, write to, or execute the committed region results in an access violation.


PAGE_READONLY: Enables read-only access to the committed region of pages. An attempt to write to the committed region results in an access violation. If Data Execution Prevention is enabled, an attempt to execute code in the committed region results in an access violation.


PAGE_READWRITE: Enables read-only or read/write access to the committed region of pages. If Data Execution Prevention is enabled, attempting to execute code in the committed region results in an access violation.


PAGE_WRITECOPY: Enables read-only or copy-on-write access to a mapped view of a file mapping object. An attempt to write to a committed copy-on-write page results in a private copy of the page being made for the process. The private page is marked as PAGE_READWRITE, and the change is written to the new page. If Data Execution Prevention is enabled, attempting to execute code in the committed region results in an access violation.

State

Free: The page is neither committed nor reserved. The page is not accessible to the process.


Reserved: The page has been reserved for future use. The range of addresses cannot be used by other allocation functions. The page is not accessible and has no physical storage associated with it.


Committed: Memory charges have been allocated from the overall size of RAM and paging files on disk

Type

Image: Indicates that the memory pages within the region are mapped into the view of an image section.


Mapped: Indicates that the memory pages within the region are mapped into the view of a section.


Private: Indicates that the memory pages within the region are private (that is, not shared by other processes).

Comment

Detailed comment, e.g. path of the file-backed section.