RAM usage way higher than Task Manager list can explain on Windows 10

I recently upgraded my RAM modules from 16GB total to 64GB total. Before, when I for example trained a deep learning model in python with 2 chrome tabs open, it used 4-6GB RAM and the RAM usage in both views would be roughly similar. Now with the new sticks, when I have no specific programs open and the PC is idling, the RAM usage is a whopping 10% (6+GB): memory usage - performance tab When I look at which apps are hogging the RAM, the numbers just do not add up. sorted list view of applications using memory How can I find where this discrepancy is coming from? Or rather: find out which applications and processes are using RAM that are not showing up on this list view?


Solution 1:

The numbers in the process tab will never add up to full memory usage. They were never meant to. Memory usage in a modern OS is very complex and you can't account for total memory usage by adding up a column of numbers. This is very difficult to do, even if Task Manager provided all the details, which it doesn't. Other utilities such as Process Explorer, not part of Windows, will show more but requires considerable knowledge to make sense of it.

To start with the process list doesn't show the full memory usage of a process. This shows only the process private usage and not memory used by executable files such as EXE's and DLL's which is often shared by multiple processes. The working set column in the details tab shows this but the sharing means you can't just add up the numbers.

Then there are major users of memory that are not processes. This includes the Paged and Non-paged pool numbers. The Non-paged pool usage is entirely in RAM while the Paged pool is not. Task Manager will not show you how much is resident but it is typically mostly so, particularly if there is plenty of available memory.

Then there is the file cache. This is not the "Cached" value in Task Manager which is entirely different and not shown at all. In a file server this is typically the largest user of memory. In a workstation it will be smaller but usually substantial.

There are also various other memory consumers which are not shown at all in Task Manager.

Memory usage in a modern OS is highly dynamic and under the control of the system memory manager. The goal is to maximize overall system performance not minimize usage. When available memory is high, as is clearly the case here, the memory manager will allow processes and other users to use pretty much what they want with few restrictions. This is as it should be. Better to use the memory for something, even if it is only of trivial value. Free memory is the ultimate in wasted memory. But when memory requirements are higher the usage will be automatically trimmed back, drastically if necessary. This will only be done when necessary as it can seriously impair performance.