Poolmon Overview

Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

Poolmon.exe

This command-line tool displays data that the operating system collects about memory allocations from the system paged and non-paged kernel pools, and the memory pools used for Terminal Services sessions. The data is grouped by pool allocation tag. Poolmon is most often used to detect memory leaks.

Poolmon displays the following data for allocations grouped by tag.

  • The number of allocations and frees (and allocations minus frees).

  • The change in the number of allocations and frees between updates.

  • The total size of allocations by tag, in bytes used, and the average allocation size.

  • The change in bytes used between updates.

  • The drivers that assign the tag value.

Poolmon also displays general memory information, including total and available memory, page faults, kernel physical memory, committed memory and the commit limit, peak memory, and the size of the paged and non-paged pools.

Using Poolmon, you can also:

  • Sort and reconfigure the Poolmon display while it is running.

  • Save configured data to a file.

  • Generate a file of the tags used by drivers on the local system (32-bit system only).

Note

  • To use Poolmon on Windows XP and earlier systems, you must enable pool tagging, the feature that collects and processes data about memory allocations. On Windows Server 2003, pool tagging is permanently enabled. For more information, see "About Pool Tagging" in Poolmon Remarks.

Corresponding UI

This tool does not have a corresponding user interface.

Concepts

Memory leaks occur when programs allocate memory but do not free it when the memory is no longer being used.

To track kernel pool memory, the system attaches a label called a tag to each allocation and lets the allocating driver set the value of the tag. When pool tagging is enabled, the system collects data about the allocations, sorted by the tag value. You can use Poolmon to display the data that the system collected for all allocations, or for allocations with a particular tag.

In addition to the system memory pools, there is a paged pool for each Terminal Services session on the system. When a system is configured as a Terminal Server, (formerly known as Terminal Services in Application Server mode), the kernel-mode portion of the Win32 subsystem allocates memory from the session pool for data structures used in the session. Poolmon also displays those allocations from the Terminal Services session pools, individually and collectively, sorted by tag value.

For more information about memory management and memory leaks, search the Microsoft Developer Network.

System Requirements

  • Windows XP Professional or Windows Server 2003

Notes

  • The system allocates memory from Terminal Services session pools only when the system is configured as a Terminal Server. Terminal Server is available on all Windows Server 2003 operating systems, except for Windows Server 2003, Web Edition.

  • Poolmon cannot generate a Localtag.txt file on 64-bit versions of Windows Server 2003. As a result, the /c parameter and its functionality are available only on 32-bit versions of Windows.

Files required

  • Poolmon.exe

  • msdis130.dll

  • msvcp70.dll

  • msvcr70.dll

  • pooltag.txt

See Also

Concepts

Poolmon Remarks
Poolmon Syntax
Poolmon Examples
Alphabetical List of Tools
Windiff Overview
Remote Overview
Poolmon Overview
Msizap Overview
Msicuu Overview
Memsnap Overview
Gflags.exe
Devcon Overview
Pviewer Overview
Exctrlst Overview
Devcon Overview
Apmstat Overview