0

Why would Windows 7 say I'm low on memory when I appear to gave 2GB-3GB of free RAM? (on a 12GB machine)

Surely 2.2GB+ is quite a lot of free RAM and it shouldn't be warning me at this stage?

Also what's the difference between "Free" and "Available"?

enter image description here

NickG
  • 1,272

1 Answers1

7

The message is a bit misleading. The system is low on backed virtual memory even though it has plenty of physical memory free. The solution is to enlarge your paging file. The system won't necessarily use the paging file -- it just needs to have it to ensure that it can keep its promises.

This is kind of like being unable to write a check even though you have plenty of money in your bank account. You need enough to cover the case where all the checks you've written are cashed at once, even if that's unlikely to happen. See here for more details.

Here's a simple, though unlikely, example that shows the problem: Say a process makes a private, writable mapping of a 3GB file. It may never modify a single byte of that mapping. However, the system must reserve 3GB of backed virtual memory in case that process modifies every byte of that file -- it has to store the changes somewhere. Not a single byte of physical memory is needed for that mapping until it is used. So this will leave the system with a mapping that requires a reservation of 3GB of RAM+paging, but requires no RAM to be used yet.

"Free" RAM is RAM that, despite the OS's best efforts, it was unable to find any way to use. It also includes RAM that is kept free intentionally for emergencies, such as when memory is needed in a context where memory cannot be repurposed, such as from interrupt contexts.

"Available" RAM is RAM that is in use but can easily be made free by the operating system if needed, that is, the information in those pages can safely be discarded. Most of this RAM will contain cached copies of file data.