Please enable JavaScript to view this site.

Memory Validator Help

The Pages tab displays all known memory allocations according to the virtual memory page in which they were allocated.

 

If the Pages tab isn't visible, use the Data Views menu to set which views are shown.

 

interactiveClick a part of the image below to jump straight to the help for that area.

 

pages-tab

 

 

This tab provides a snapshot of how the memory in use is distributed across virtual memory pages (4K in size).

 

By looking at the data, especially the graphical view, you can see the memory fragmentation, and find out which parts of the application are using each memory page.

 

 

The Pages Data

 

The data lists all virtual memory pages used by the target application, omitting those pages that have no allocations within or overlapping them.

 

The first line of data gives an overall summary, for example:

 

pages-header-line

 

The remaining expandable items are shown in page order:

 

pages-data-item

 

Each page item shows:

 

the page address

the number of allocated objects completely or partially in the page

the percentage fragmentation within the page

number of bytes used

unused bytes

 

Expanding an item shows details about allocated objects and free space in each page.

 

Selecting one page in the list may highlight others either side in gray as below. This indicates that those pages are linked by memory allocations spanning between or across those pages.

 

pages-contiguous

 

Display options allow you to focus either on the objects within each page or on the order of the objects and free space.

 

note Note that unlike many of the other data tabs, the pages data is not automatically updated at regular intervals. You'll have to click Refresh to get an update.

 

 

Page tab options

 

At the far left of the window are some options for updating and viewing the data.

 

pages-options

 

 

Display settings

 

The display option at the top changes how the data is displayed when you expand each page data item:

 

Display by Usage instructionStep orders the information within each page by the objects using it, and then by the chunks of free space, grouped by size

 

Display by Address instructionStep shows each page's information by the start address of each object or chunks of free space within that page

 

Unused space threshold instructionStep when displaying by address, free space blocks greater than this threshold are highlighted as below

 

Each allocated object in the expanded view shows data type, size, address, and source file with line number if known.

 

Below are examples of a page's details expanded for each display method:

 

By usage:

 

pages-by-usage

 

By address, highlighting free space blocks over the set threshold:

 

pages-by-address

 

 

Updating the display

 

Clear instructionStep removes all data from the display

 

This can be useful if you have limited RAM and inspecting large applications as it frees up resources used by Memory Validator so that you can use another tab view.

 

Refresh instructionStep updates the display - as does the refresh button on the Tools menu and toolbar

 

 

Graphical view

 

 

Graphical instructionStep shows the following dialog visualizing the page data in memory

 

pages-graphical

 

This view uses a single coloured pixel for each page of memory, wrapping from left to right and top to bottom:

 

Red instructionStep very fragmented - 0 to 33% usage

Blue instructionStep fragmented - 33 to 66% usage

Green instructionStep least fragmented - 66 to 100% usage

 

Hovering the mouse over any coloured area in the graph shows the address, number of objects, and the usage as a percentage and number of bytes just below the graph.

 

The graph has a popup menu giving access to allocations, reallocations and deallocations as follows:

 

Page information... instructionStep allocations in the selected page (pixel)
 

Region information... instructionStep  allocations in the same contiguous block of colour (i.e. with the same fragmentation level)

 

An example of the page information dialog is below. The region information shows the first and last page address accordingly.

 

pages-graphical-page-info

 

The allocations in the dialog can be expanded, to show the local source code, and double clicking launches your preferred editor with the source file.

 

 

Local filters and settings

 

Filter... instructionStep shows the local filters dialog for the Pages tab

 

 The filter button also indicates the number of local filters, although not all of these may be enabled
 

num-local-filters

 

 

Searching for memory in pages

 

Search... instructionStep shows the Find Memory dialog for the Pages tab

 
This is the same as the search button in the toolbar, and the Search option in the Query menu.

 

 

Totals

 

At the bottom of the options on the left are two totals:

 

pages-totals

 

Total allocated instructionStep gives the total memory consumption for all allocated objects

 

Max allocated instructionStep shows the total allocation capacity for all the virtual memory pages currently in use

 

This would simply be the number of pages multiplied by 4K, so in the example above 57 pages * 4096 = a capacity of 233,472 bytes

 

 

Pages view popup menuright_mouse_button

 

The following popup menu is available over the data area

 

pages-popup-menu

 

 

right_mouse_buttonMenu option: Help on selected item

 

Help on selected item instructionStep the sub-menu shows a simple one line description of the type of data that has been selected:

 

 

right_mouse_buttonMenu option: editing source code

 

Edit Source Code... instructionStep opens the default or preferred editor to edit the source code

 

 

right_mouse_buttonMenu option: relations

 

When used over an allocation within a page, the relations sub menu lets you show some related allocations in the Analysis tab to inspect in more detail.

 

pages-popup-menu-relations

 

Show Allocation Location instructionStep adds only the allocation for the selected item in the page to the Analysis tab

 

Show previous and next... instructionStep adds the available allocations for the allocations in the specified event sequence range, relative to the selected item in the page
 

 For example, choosing the previous and next 10 allocations, shows allocations in the range id-10 to id+10, but only those that are still accessible.  

 

Show Allocations/Deallocations for type instructionStep adds all the allocations/deallocations (or both) to the Analysis tab that match the object type of the selected item in the page

 
 For example, if the allocation in the page is of type BYTE[], this will show every allocation that is of the same type, including the one you selected.

 

 

right_mouse_buttonMenu options: collapse / expand page data

 

Collapse or Expand Page Data instructionStep simply shows and hides the information for the selected page, the same as using the expand-symbol or collapse-symbolbuttons

 

Collapse or Expand All instructionStep completely collapses or expands all the pages information in the display