A Windows Server 2019 virtual machine hosts a custom .NET service named InventoryService.exe. After several days of uptime, administrators notice that the server responds sluggishly even when the workload is light. Task Manager shows that InventoryService.exe has grown from about 300 MB to more than 2 GB of memory and that the value keeps increasing during off-hours. You need to capture performance data over the next 24 hours to show the development team clear evidence of a memory leak in this single process. Which Performance Monitor counter will provide the most direct proof that the process is continually allocating memory that it never releases?
The Process | Private Bytes counter records the total amount of memory that a specific process has allocated exclusively for its own use (it does not include shared memory). A steady, unbounded rise in this value while the workload is unchanged is the classic signature of a user-mode memory leak.
The other counters are less conclusive:
Memory | Available Bytes measures free system memory, not what a single process allocates, so many unrelated factors can influence it.
Process | Handle Count tracks open object handles; leaks in handle usage do not necessarily consume large amounts of memory, and handle growth can occur without a leak in private memory.
Memory | Pages/sec shows paging activity at the system level; it may spike because of a leak, but it can also rise for perfectly healthy workloads and therefore is not definitive proof of a leak in one process.