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:
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. |