Partager via


Quick perfmon check to detect potential memory leak in Windows

The below counters are just to be taken as indicators if you suspect a memory leak on your machine; there are other Tools that are designed for detecting precisely memory leaks, but you can start with understanding what Working Set – Private, Private Bytes and Working Set indicate and watching the below perfmon counters …

- If Windows 2008 or later:

\ServerProcess(*)Working Set - Private

The above counter will tell you how much memory each process is using – it counts the memory allocated just for that specific process, excluding the memory used by the process that can be shared by other processes. So it’s the most accurate process memory counter that can tell us if we have a memory leak.

- If Windows 2003 or earlier :

\ServerProcess(*)Private Bytes

This one reports bytes allocated exclusively for a specific process; its value tends to rise for a leaking process.

\ServerProcess(*)Working Set

The above one reports the shared and private bytes allocated to a process; its value tends to rise for a leaking process. (WS Shared bytes correspond to physical memory area that the process shares with other processes while WS private bytes shows memory area only taken by the process itself)

- All versions:

\ServerMemoryAvailable Bytes (for Windows 2003 or earlier)

or

\ServerMemoryAvailable MBytes   (For windows 2008 or later – easier to read without having to convert from Bytes to MB)

References:

- Investigating User-Mode Memory Leaks

https://technet.microsoft.com/en-us/library/cc938582.aspx

- What is private bytes, virtual bytes, working set?

https://stackoverflow.com/questions/1984186/what-is-private-bytes-virtual-bytes-working-set