This page has been archived and is no longer updated.

We do not supply this product anymore.

MemPro

A C++ memory profiler that shows where memory is being used, and potential memory leaks.

Published by PureDev Software
Distributed by ComponentSource since 2017

Version: 1.3.7.0 Updated: Sep 16, 2016

MemPro Features

View memory usage over time and create snapshots.
Memory Graph
This view shows allocations by broken down by callstack.
Call-Tree View
The Page View shows memory usage at the system page level.
Page View
MemPro will automatically find memory leaks.
Leak View
The History View allows you 'rewind' memory.
History View
View memory usage over time and create snapshots.

View memory usage over time and create snapshots.

The graph view shows reserved, committed and allocated memory over time. Use the mouse to scroll and zoom the graph. This graph is useful for spotting memory trends over time and spikes in memory. Right click on the graph to create a snapshot at a specific time. Select snapshots by clicking on them, and select two snaoshots to compare them.

The second graph shows allocation count over allocation size. This is very useful to see the most common size of allocation. It gives a guide as to the overall load on the allocator, and potential places to optimize or use custom allocators.

This view shows allocations by broken down by callstack.

This view shows allocations by broken down by callstack.

MemPro records the callstack for each allocation. It combines similar callstacks to create a call-tree. For each stack MemPro shows the allocation count and memory. This is useful to see what code is allocation the most memory. Start off at a high level and then drill down into the data.

By default the tree starts at the root (the main function). The reverse Tree button reverses the tree so that it starts at the functions which allocate memory. This is useful when you want to see the highest allocators and work backwards.

The Grouping editor allows you to group common callstacks and gives a very quick way to break down your data into manageable chunks. Groups can be saved and re-applied to other data to give you a high level overview of how much memory different systems are using.

The Page View shows memory usage at the system page level.

The Page View shows memory usage at the system page level.

The Page View shows virtual address space and system pages. Using the three bars you can view from the highest level of virtual address space, right down to each page, and each allocation in the page. Navigate around by clicking and scrolling each of the bars in turn, and zoom in using the mouse wheel.

Use the memory key to show or hide different types of memory. Each system page is colored based on what percentage of the page is in use. This is a great visual measure of how badly your application is fragmenting memory. If you have taken a full memory dump then you can inspect the actual contents of memory at any address.

MemPro will automatically find memory leaks.

MemPro will automatically find memory leaks.

MemPro has a sophisticated algorithm for finding potential memory leaks. One of the ways MemPro achieves this is to walk the entire application memory looking for allocated memory that is not referenced by anything. The other main way is that the memory which is allocated from each callstack is graphed over time. If the graph has certain characteristics that make it look like it is leaking memory MemPro will flag that callstack.

For each callstack that is flagged you can see the graph and details on why MemPro thinks that it is a leak. Use the exclude filter to eliminate any false positives.

The History View allows you 'rewind' memory.

The History View allows you 'rewind' memory.

The History View allows you to select a memory range and see all of the allocations that have ever occurred in that range. Use the time slider to move through time and see all allocations and frees and when they happened.

The main use of the History View is for tracking down Memory Corruptions. Corruptions often happen because something is writing to memory that it doesn't own anymore. If something else is now using that memory it will become corrupted. Use this view to see what was using this memory in the past and might be writing over the new allocation.