Standby Memory seems never to be recycled in Windows 10

I am looking for intelligent commentary/explanation of this issue from experienced computer janitors, Windows babysitters, admins etc. There are many forum discussions about this on the Internet, mostly about stuttering in video games when there is extremely little “free” ram (and typically lots of ram marked as “standby”) as shown in task manager. Here’s a recent example in which Wagnard mentions workaround utility Intelligent Standby List Cleaner (ISLC) that watches for this condition and forces Windows to dump all of the standby data to clear that ram and return it to the “free” memory pool. Filling Memory Standby list causes stuttering in games.

The commentary I find out there seems to be one of two types. [1] Windows is so stupid for clogging up ram with standby data; use ISLC. [2] (In response to 1) Sir, you are lacking in intelligence if you think the thousands of geniuses at Microsoft could possibly have created this behavior accidentally or without good reason so you should leave things alone.

[2] seems to be ignorant blind Windows white knight loyalty stuff, and [1] seems not to understand that there is good reason for windows to leave data in most of the ram - that data could become useful again and be “reactivated.” The problem as I see it is when additional new data needs to be loaded into ram, it seems that Windows is not letting go of this standby data to make way for new stuff. It seems that it instead will move it to the page file before making additional ram available, and this delay could be causing the hitching.

I’ve mostly run into this when using SolidWorks, but have seen it with just tons of web browsing and many days or a couple weeks between reboots. I have a 4GB cap on the page file because I got tired of it growing to like 60GB and Windows complaining of low disk space. I have 32GB ram. To me (by no means an expert) it seems the standby data is forever hoarded, overflowing into page file, and when that’s full and the ram is full, rather than deleting some of the data, stuff just starts crashing or chugging - solidworks “out of memory. terminating…” or explorer crashing or whatever.

Is this really a problem with Windows, or is the application (SolidWorks/ browser/ game) to blame for making a mess of things or “not letting go” of data. I’m generally quick to blame SolidWorks for being temperamental and the opposite of robust and efficient, but I wouldn’t think these applications would be doing low level memory management, and if it were SolidWork’s fault for not letting go of data, wouldn’t that data still be in the “used” category rather than “standby?”

Assuming this really is a bug in windows 10, it’s astounding to me that something so fundamental could be so broken for so many years. I don’t think I ever encountered this in 7, and according to many it was not this way in 10 originally.

SysInternals RAMMap has been around for 11 years.

I’ve poked around with that but it doesn’t seem to explain why Windows (or whatever app) isn’t letting go of no-longer-needed data. If the explanation is there, I’m not savvy enough to realize/understand it staring me in the face.

Looks like it’s “Mapped Files” that are clogging up all the standby memory, but I don’t understand why Windows isn’t throwing away some of that as it’s needed for programs or Windows itself to keep functioning. Explorer, start menu, etc gets buggier and buggier until stuff starts crashing. Eventually Solidworks will crash. Or I can manually purge the standby list and all these problems will go away with seemingly no ill effects.

I have not heard of Windows’ Standby-Memory causing any performance problems.

Its whole point is to contain files that have already been opened before or files that Windows believes are very likely to be opened next.
Since it is not practical to shut off part of the memory, empty memory still consumes power. If we stuff that empty memory full of data we might eventually need, there is at least a chance of this power not being completely wasted.

And yes, the intent is to drop any of that cached data, as soon as the space is needed by an actual process. As the “Standby”-Data is supposed to be “clean”, meaning a straight copy of what is already on disk, it should basically take no additional effort to overwrite. (and has not yet in my experience).

This is more or less the same behavior that Linux exhibits, at least on the standard distributions I have used.

I can only come up with 2 explanations, why this would ever cause performance problems.

The first of which is, that you need to keep track of what data you have cached and which you have no longer cached. Maybe rare types / sizes of data are exceptionally hard on this bookkeeping, costing additional performance when dropping many of them at the same time. This is purely a guess and, I think, not very likely.

The other explanation is something I have observed on Linux actually. Certain things in the Kernel itself are appearently to important to wait for dropping cached memory. For example certain BTRFS operations always cause swapping, even though the system has more than 20 GiB available in the form of cached memory.

But looking at your Task Manager screenshot, I find the overcommit of 35 GiB of 32 GiB phyiscally available RAM and the amount of compressed memory much more likely to be the root cause for your problems. Even the tiniest memory leak can sum up over long times. And when a program suddenly needs data that windows has compressed away, it may take longer than the program expects for the data to arrive. This has lead to games stuttering in the past. (I believe Batman Arkham Knight was a prime example of this when it first came out)

If Windows has completely unused memory, because you recycle it forcefully with external tools, and Windows has no idea what to cache, it might start to uncompress some of that data.

Wasn’t that caused by Denuvo decrypting the assets while they were being streamed, at least on CPUs without large core counts ( <4 iirc, but it’s been a while)?

Could be mixing it up with another Batman game though. Arkham Asylum was extremel colourblind unfriendly so haven’t really looked at the rest since.

If memory serves me right, it ran much better on Windows 7 / 8 than on 10 when it came out on PCs.

But now that you mention it, I’m getting a bit less confident in my memory and may also mix that up with other games. Although I read news about that around that time, when the memory compression was still new.

On short notice I only found one quick link describing how Windows 10 would need more RAM, but I believe there was confusion at the time, because the game did not actually consume that much, it just needed Windows to compress less aggressively.

Thank you for the thoughtful reply, Ray. The memory compression isn’t something I had considered before. You may be onto something there.

There is a bug in windows 10 where Superfetch and prefetcher will eat up all your standby memory in the Pro edition. To resolved this, you must turn these off and clear the standby memory.

To turn them off:

Turn off SysMain in the Services and Disable it from startup by right clicking it, and clicking properties and choosing startup as disabled.

Now go to your Registry.
Now go to:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters

Turn off EnablePrefertcher by right clicking, select modify and set value to 0. Click Ok.
Now if SuperFetcher is in there also, do this for that. It might not, found it on different machines (no idea why.)
Now download RAMMap from Windows website, it’s a free application. Do not download from anywhere else but windows website.

Open the RAMMap.exe, don’t do the 64 one. Once open, click empty on the top left, and click empty stand by list. Now look at resource monitor and your standby memory should be almost all free.

1 Like

Thank you Jeff! This worked flawlessly! This post should be pinned to all search engines for eternity!!

Hi Jeff, I realize this is an old post, but I haven’t found another that seems to address how to completely disable the standby cache. I followed your post and Windows 10 22H2 seems to ignore at least the registry setting after rebooting. So, far it has been limited to less than a GB of memory which is definitely an improvement over the 30+ GB it was using before. I’m just not sure if this will end up growing as well or if this prevents the standby cache from growing past a certain point. Any help would be appreciated.

Do we still need to do it for W11 22H2? because it still happens