Saturday, August 16, 2014

Why does Windows claim to be low on memory when I have swap space available?


I have 4GB of RAM. But according to system monitor my PC never uses above 3.1 GB. When it reaches 3.1 GB used apps start to shut down/crash.


Why is that remaining 800MB not used?


I found a few web resources like: The usable memory may be less than the installed memory on Windows 7-based computers


But my PC does not say anything about usable memory. It's only 4GB and not limited.


Also found few other questions here, but every one has usable part displayed. And my PC does not show it.


system control panel image


I get the following error almost constantly:


low memory error image


Shouldn't it use swap instead of issuing errors?


Just a thought: I have less than 10% free space on disks, and they're red. It's still plenty of space on HDD, but maybe Windows then tries not to use swap?


Memory monitor: memory monitor image


Also, a screenshot of how swap file looks like when errors appear:
enter image description here


Answer



You really are out of memory (virtual memory, that is)


Take a look at your the Commit Charge as highlighted in your Task Manager screen shot:


enter image description here


First number = Current commit
Second number = Commit limit


According to this answer:



The commit limit = current pagefile size + RAM size - RAM permanently allocated to nonpageable memory.



This is a hard limit: Windows cannot grant requests by programs for more memory beyond it. This screen shot indicates you have 10 GB of a possible 10 GB allocated to programs. This is triggering the "Out of memory" message.


What to do?



  1. Install more physical RAM. This will increase your Commit Limit accordingly and improve your computer's performance.


  2. Increase the size of your page file. This too will increase your Commit Limit, but because paging slows down a computer, don't expect any performance benefit.


  3. Close programs that are using the most memory. You can return to the Memory tab in Resource Monitor and sort the processes by the Commit (KB) column to see which ones are having the greatest impact on your memory use. Perhaps you have a program that's using too much memory that can be closed. Be aware that "The total commit charge will always be larger than the sum of these values, as the total includes system-wide allocations such as the paged pool." (Source)



No comments:

Post a Comment

linux - How to SSH to ec2 instance in VPC private subnet via NAT server

I have created a VPC in aws with a public subnet and a private subnet. The private subnet does not have direct access to external network. S...