0

I have been poking around on the Resource Monitor on Windows, and have noticed that there is often a large amount of memory that is listed as Free, rather than as standby. I understand that superfetch basically pulls stuff that you will likely need, and caches it in RAM, so why is it not utilizing this space?

Furthermore, I know that a system like readyboost is supposed to keep cached commonly accessed files from a computer. Yet looking at the Resource Monitor, I notice that the largest amount of free space occurs when I close a program. Why is it not keeping the data from that closed program in RAM, so it could boot up to the exact same state faster?

This specific detail that I noticed is what led me to asking this question on superuser, in which early discussions indicated that any boost in performance I saw was most likely a placebo effect.

ram example

1
  • 1
    There’s no benefit to keeping random data in RAM/cached. Only mapped files are reusable.
    – Daniel B
    Jul 28, 2017 at 6:04

1 Answer 1

1

I understand that superfetch basically pulls stuff that you will likely need, and caches it in RAM, so why is it not utilizing this space?

Superfetch tries to determine things you will likely need in the near future and and loads it into memory, thereby hopefully making the computer respond faster.

As a counter question -- considering your whole running system takes up ~4GB of RAM, with 2GB standby, what do you run frequently that would take up an extra gig or two of memory?

I notice that the largest amount of free space occurs when I close a program. Why is it not keeping the data from that closed program in RAM, so it could boot up to the exact same state faster?

Clearing used memory is an inherent feature of every program because not doing so can cause issues with any program that wants to use that same memory in the future. In fact, (re)using memory that is already in a specific state is a major bug in programming because data is interpreted differently by different programs or even by the same program between runs.

Likewise, "boot[ing]up to the exact same state" is likely undesirable for many programs. I learned my lesson in old-school Tomb Raider -- never save while you're on fire.

Kidding aside though, there are many reasons it is undesirable to retain data between sessions, especially if there is an error. This also assumes an awareness of the program that Windows might not have (what do we retain?).

Also consider programs that are not used frequently or that actually cause a spike in memory use. If there is little or no free RAM, memory has to be cleared for use. Often this can result in writing to disc (and subsequently reading from it likely later), which is much slower than RAM.

Finally, as a comment, I think the assumption about data size is wrong here too. It can take a large amount of memory to run a program but unless your are doing something with multimedia, program "data" tends not to be very large. For instance, Firefox on my machine requires about ~300MB of memory. But any web page "data" is almost certainly under 20MB.


If you are absolutely set on using that memory, here are two thoughts:

  • Review msconfig and make sure there is no memory limit in place. There is no indication this is an issue but you can double-check that Windows is set to use the maximum amount of memory it can.

  • Create a RAM disk. It sounds like you really want that memory used and this could be a good way to do that, especially since you seemed concerned with program speed.

10
  • Firefox uses 300MB? How many tabs do you have open, Mine is way higher. As for my other programs, think 3D modeling. Though this still does not clear up why it does not load up all of free RAM. Jul 28, 2017 at 18:52
  • For Firefox, one tab (Google). For multiple tabs, it's often much higher (proportional to the amount of tabs open). Regarding 3D modeling, this can be memory intensive. But again, what constitutes data (or useful data at least)? The cycles heavy render test in Blender is about 230MB on HDD but about 1GB when loaded with Blender. But how do we map this "larger" data set? RAM assignment is complex and programs don't reuse the same memory between runs. How do we associate this data with a second run of Blender? The answer is we can't. We can only reuse the .blend file and that is 230MB not 1GB. Jul 29, 2017 at 1:56
  • Also consider that full memory is memory another program cannot use with data being cleared. If we used the full 4GB of non-OS memory above and then wanted to run Blender and the render test mentioned, we would have to clear about 1GB of space. This is cached data that would often be written to disk which is much slower than working with RAM and thus Blender would potentially take longer to start. So caching in this instance would be a burden, not a benefit. Jul 29, 2017 at 2:02
  • As two quick thoughts, you can check msconfig to ensure that the maximum amount of memory you have is available to Windows for use. The other idea is to create a RAM disk. Not quite caching but it would use that memory and potentially speed any programs or files used with it. Jul 29, 2017 at 2:16
  • I've done some experimenting with combining a RAMdisk and ready boost. It seemed to speed things up, but I need to so tests based on more than personal opinions to confirm it. Jul 29, 2017 at 2:19

You must log in to answer this question.

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