This article provides a description of what the available bytes number in Task Manager represents.
When you click the Performance
tab in Task Manager, you can see an "Available Memory" counter in the Physical Memory
box. It is important to understand what the "Available Memory " counter actually represents from an internals perspective. If you do not understand what this "Available Memory" counter actually represents, it may appear that it never approaches zero at times when you might expect it to do so.
The "Available Memory" counter in Task Manager is actually the sum of the following three internal memory lists:
- The Standby list.
- The Free list.
- The Zero list.
When a process ends, the working set for that process is placed in the Standby list. If that process is immediately restarted, there is no I/O that takes place to run that process again. The pages that are placed on the Standby list are code pages from .dll and .exe files. The private byte data for these processes is placed on the Free list.
When the Free list reaches a size of eight or more pages, a system thread wakes up and zeros out the free list. The system thread then moves the pages that are contained in the Free list to the Zero List. When the system needs a page of memory to satisfy a fault, the system thread tries to obtain the page from the Free list. If the Free list is empty, the system thread tries the Zero list, and if that is empty, the system thread tries to allocate from the Standby list.
Pages of memory are placed on one of these three lists when a process quits, but also when the working set for a process is trimmed to satisfy system resource requirements. Pages in a process working set can be trimmed because of either low-memory conditions, or after a period of inactivity because the memory manager is going to keep a bias towards having enough resources for new or expanding processes.
To summarize, the Available Memory counter in Task Manager does not go to zero because it is a total of all of the three lists that are listed earlier in this article. Although you can think of the Standby list as the file cache, it comprises most of the available memory, so it may be more useful to think of available memory as the file cache.