6

I have windows 8.1 64 bit, 8Gb ram.

My Task Manager shows 49% used ram, but I still get messages like "Windows is low memory, we recomend to close application". It always says that about the application which is not currently active, but uses more memory than other processes (when Firefox is up, it is Firefox, otherwise it's Skype).

So my question is: how to setup threshold or how to force Windows not report about low memory?

Note: even when it has 70+% free it still reports about low memory. Number of application running doesn't metter.

Note 2: it doesn't happen when I start new app. Looks like windows have some memory checker and it pops up that message on regular basis when swap off. It minimizes active apps(games or browser) and show me that weird message.

18
  • 1
    Shows used RAM, or used memory (i.e. what is the pagefile size, and how much RAM do you actually have?) Also, how much free space do you have?
    – soandos
    Dec 4, 2013 at 23:57
  • Sure. Swap not used, Free ram 1.6G,Cache 2.2G,Used 4.2G. Question is not "where my RAM?". Question is "WHY it alt-tab my games/apps to say there are no RAM,while it have free more then 2Gb?" And what i can do with that bad behavour.
    – arheops
    Dec 5, 2013 at 0:12
  • have you disabled the pagefile? Dec 5, 2013 at 5:02
  • 2
    Read my answer, there is no such threshold. That is a myth. And having a paging file won't mean any more I/O -- in fact, it will mean less I/O because it will mean the RAM can be used more intelligently to hold more clean pages and avoid more I/O. (If you think about it rationally, that makes no sense anyway. For the same workload, why would having a paging file make more I/O? It just gives the OS more options, and the OS is smart.) Jan 24, 2014 at 1:31
  • 1
    @arheops I strongly feel that your testing method is either inacruate or you are misinterpreting the results. Please put in as a edit to the question how you determined this information with enough detail for us to re-create the process and confirm your results. Jan 24, 2014 at 1:33

2 Answers 2

15
+50

You are low on virtual memory. This can happen even if you have plenty of free RAM.

It's just like being unable to spend money even if you have plenty of checks left and plenty of money in the bank. You have to have enough money sitting around to cover the checks you've already written or you can't write any more without risking catastrophe should all your checks be cashed at once.

A simple solution is to enlarge the paging file.

A paging file is like a line of credit that Windows can borrow from. Knowing that it can borrow from the paging file should all its checks be cashed at once, it can keep writing checks. Odds are it won't actually use the paging file, but it just needs it to ensure it can keep its promises.

For example, say you have 4GB of RAM. Four applications start up and tell the OS that they might need up to 1GB of RAM (a reservation). The OS says, "fine", and all four applications start. (Would you prefer it not let them run?!)

Say they're using a total of 1GB of RAM now. Then another application starts up and asks for 1GB. What can the OS do? If it says yes to that application, what happens in the very unlikely event that all the applications suddenly use all the memory they asked for? THe OS doesn't have 5GB available, and it can't revoke promises it has already made.

With a page file, of course, it can just write rarely-used pages out to disk and keep all its promises. So it needs the page file to allow another application to run, even if 3GB is free.

With a large paging file, Windows can allow applications to run so long as the actual working set can fit in RAM. Without a paging file at all, Windows cannot allow any applications to run unless it can fit everything in RAM that could possibly be used based on commitments it has already made. That means, for example, that a simple private, writable mapping of a 1GB file makes an entire 1GB of RAM essentially wasted because the application might write to every byte of that file, so that 1GB of RAM can only contain pages that can safely be discarded.

Linux, by the way, allows the operating system to overcommit backing store. The downside of this is that it may need to forcefully kill processes if the OS winds up making promises it cannot keep. This is why Linux has an "OOM kiler" and Windows does not. Most Linux machines have overcommit disabled anyway.

6
  • Linux allow set Swappiness. So i need find similar param for windows. I can't agree that 2 of running app requested 8Gb ram,really.
    – arheops
    Jan 24, 2014 at 1:31
  • 1
    Swappiness is a slightly different thing. Swappiness causes the OS to use the paging file more aggressively to try to allow it to use more RAM as a cache and less to hold dirty pages that are only rarely accessed. Unlike Linux, I don't think Windows really swaps opportunistically very much when it's not under physical memory pressure. (Though I'm not that familiar with how the tuning may have changed under Windows 8 and 8.1) Jan 24, 2014 at 1:35
  • @arheops Look at the numbers for "Commit" in a system with no swap the sum total of the Commit column must be lower than your total ram. The things that report "49% used" usually only report the total of the "Private Working Set" which does not include virtual allocations which would normally go to the swap file. Please give us the total of the "Memory - Commit Size" and compare that number to your total ram. 2 running apps have 8 GB of private working set is very strange, but 2 running apps having 8GB of commit is not that odd. Jan 24, 2014 at 1:37
  • Okay. If so, how it can run other app like photoshop(1+Gb ram more) withou any issues?
    – arheops
    Jan 24, 2014 at 1:43
  • 1
    @arheops It can run apps without any issues because it still has plenty of clean pages it can discard. The system will get slower and will eventually fail spectacularly as the number of dirty pages gets to be a higher and higher fraction of the total number of RAM pages available because there is nothing the system can do with anonymous dirty pages but keep them in RAM, even if they haven't been accessed in hours. Jan 28, 2014 at 21:08
2

Low memory alert can be turned off by hacking the registry as described below.

However, as registry modifications can destabilize Windows, better first take care of your backups and create a system restore point to which you can go back in case of problems. I have no personal experience with this hack.

Start regedit and position yourself to this key :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WDI\DiagnosticModules

Export (for backup) and then delete the following sub-keys :

{45DE1EA9-10BC-4f96-9B21-4B6B83DBF476}
{5EE64AFB-398D-4edb-AF71-3B830219ABF7}
{C0F51D84-11B9-4e74-B083-99F11BA2DB0A}

Now reboot.

If you find you have no permissions to delete these registry key, see the article
Take Ownership of a Registry Key in Windows 7.

You should be aware of the fact that if ever you run out of memory without warning, Windows can crash without any prior notice or programs may misbehave strangely.

Also, this advice worked for Windows 7, but was never proved for Windows 8.1.

source

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .