Question I'm super confused on "Virtual Memory" and Usage ?

May 1, 2023
194
7
95
so I have 32gb ram, which as far as I know is "Physical Memory", and I'm quite familiar with the behaviors of my ram and the usage under load, but one thing I'm confused about is my Virtual Memory and whether or not I should be concerned or if I should do anything? my current Virtual Memory settings are set to the default of Windows 10, which means according to my settings, I have a V. Memory of "4864mb"


first image attached is my current idle Virtual Memory, according to HWInfo64, and you can see it Commits about 10mb of Virtual Memory (usually commits about 8-10mb idle) and has 27mb available, with a load of 27%

second image attached is taken a few hours ago when I was playing Destiny 2, which Commits 15-16mb and leaves 20mb Available, with a load of 45%; on a more intensive game like Elden Ring, although there's no screenshot, it has a load of around 50% and Commits around 20mb.


View: https://imgur.com/a/lb7j8eu



View: https://imgur.com/a/T8HN39L



is this normal, or anticipated behavior? I'm confused on whether or not the "4864mb" set by default translates to 4.8gb of Virtual Memory or 48gb of Virtual Memory; I read that VM should be 1.5x your Physical Memory, at the minimum. 32 x 1.5 is indeed 48, if I'm not mistaken

however, adding my Committed Memory to the Available Memory, I always come out with 37 and not 48. so I'm basically just a little confused on how this works and if my Virtual Memory/system is behaving normally or not? I don't seem to have any issues but I'm just seeking some insight here
 
and you can see it Commits about 10mb of Virtual Memory (usually commits about 8-10mb idle) and has 27mb available, with a load of 27%
not that it matters but its actually using 10k mb, not 10 mb... also has 27k mb. you reading it wrong

you have 4gb of virtual memory 4000 mb = 4gb

virtual memory is page file+ ram
Page file is on C drive. Page file can grow or shrink, depending on usage. If its set to auto, windows can grow it to equal the amount of ram in system.

WIndows can grow page file to be as big as your ram size but with 32gb of ram, you would rarely use page file. Windows tries to avoid using it and just pretends it can give every program 2gb of ram and only uses it if they all ask for it. Its more likely to compress programs in ram than to write them to page file.

I have 32gb of ram and my page file size is about the same.
 
Last edited:
  • Like
Reactions: PEnns
not that it matters but its actually using 10k mb, not 10 mb... also has 27k mb. you reading it wrong

you have 4gb of virtual memory 4684 mb = 4gb

virtual memory is page file. Page file is on C drive. Page file can grow or shrink, depending on usage. If its set to auto, windows can grow it to equal the amount of ram in system.

WIndows can grow page file to be as big as your ram size but with 32gb of ram, you would rarely use page file. Windows tries to avoid using it and just pretends it can give every program 2gb of ram and only uses it if they all ask for it.
I know it's using 10k mb I just completely mistyped that, my bad. I was literally reading it while typing, idk how it slipped past me


anyway, so is 4gb enough then? it's set by default and I don't believe I've had any problems. I just use the PC to browse Chrome, talk on Discord, and play games on Steam, so the Windows default is enough to avoid causing issues or "running out"?


also if I have 4684mb Virtual Memory, what's the 10,000mb Committed and 27,000mb Available mb of Virtual Memory on HWInfo about then?
 
Commits are the total amount of ram + page file in use currently.
Available is the difference between your max and what you using now.
both of your totals in the screenshots total to roughly 37517mb, your commit limit should be higher I would think. Mine is 58gb

Process explorer can show more
3AgKzRG.jpg

Current is in use
Limit is max I could use
Peak is most I have used at that point in time. On that day.
 
Let me start with a statement; one of the major components of Windows is the memory manager. Its job is to manage memory (both real and virtual) - and it's very very good at it. The memory manager is infinitely faster, more responsive, and more effective that you could ever be. Therefore memory management is not something the end user needs to worry about, as long as you have enough installed of course.

It is a huge error to worry about running out of memory on a modern system with 32GB of installed RAM. It's a huge error even with 16GB of RAM. Stop worrying, you can't second guess the Windows memory manager by looking at either virtual memory in use or real memory in use. It serves no useful purpose.

Real memory is the total installed RAM. Virtual memory is the total installed RAM plus the size of the paging file on disk. The paging file is used to hold pages of virtual memory that are not being used right now. For example, think of any process; it has an initialisation routine and a termination routine. The initialisation routine has already been executed and we won't need the termination routine until the process ends, so there's no need to keep the virtual pages containing these routines in RAM, they would be better paged out to the paging file, freeing up the RAM they were occupying for other virtual memory pages (a page is 4kBytes). A virtual memory page then, can be either in RAM or in the paging file.

The easiest way to check whether you have enough RAM installed is to look at the current commit charge. This is the total amount of virtual memory that the memory manager has agreed can be used system-wide (at the moment). It represents the current high-water mark of virtual memory in use at this point in time. If the current commit charge is always less than the size of your installed RAM then you have plenty of RAM installed. Period.

If the current commit charge is consistently higher that installed RAM, and for long periods, then you need to think about a RAM upgrade
 
Last edited:
  • Like
Reactions: hyperflux
I know it's using 10k mb I just completely mistyped that, my bad. I was literally reading it while typing, idk how it slipped past me


anyway, so is 4gb enough then? it's set by default and I don't believe I've had any problems. I just use the PC to browse Chrome, talk on Discord, and play games on Steam, so the Windows default is enough to avoid causing issues or "running out"?


also if I have 4684mb Virtual Memory, what's the 10,000mb Committed and 27,000mb Available mb of Virtual Memory on HWInfo about then?
If set to auto windows will expand and shrink if and when needed. If it's not getting larger that means you didn't have problems.
Windows use 2 files for memory management
Pagefile.sys and swaofile.sys
 
Commits are the total amount of ram + page file in use currently.
Available is the difference between your max and what you using now.
both of your totals in the screenshots total to roughly 37517mb, your commit limit should be higher I would think. Mine is 58gb

Process explorer can show more
3AgKzRG.jpg

Current is in use
Limit is max I could use
Peak is most I have used at that point in time. On that day.
yeah, I mentioned that adding both values together gave me around 37k; so is that my "Commit Limit" or are you saying that my Commit limit value would be higher than 37k


either way, thanks for the info, and for the clarification with your other message (the one you just sent)
 
Let me start with a statement; one of the major components of Windows is the memory manager. Its job is to manage memory (both real and virtual) - and it's very very good at it. The memory manager is infinitely faster, more responsive, and more effective that you could ever be. Therefore memory management is not something the end user needs to worry about, as long as you have enough installed of course.

It is a huge error to worry about running out of memory on a modern system with 32GB of installed RAM. It's a huge error even with 16GB of RAM. Stop worrying, you can't second guess the Windows memory manager by looking at either virtual memory in use or real memory in use. It serves no useful purpose.

Real memory is the total installed RAM. Virtual memory is the total installed RAM plus the size of the paging file on disk. The paging file is used to hold pages of virtual memory that are not being used right now. For example, think of any process; it has an initialisation routine and a termination routine. The initialisation routine has already been executed and we won't need the termination routine until the process ends, so there's no need to keep the virtual pages containing these routines in RAM, they would be better paged out to the paging file, freeing up the RAM they were occupying for other virtual memory pages (a page is 4kBytes). A virtual memory page then, can be either in RAM or in the paging file.

The easiest way to check whether you have enough RAM installed is to look at the current commit charge. This is the total amount of virtual memory that the memory manager has agreed can be used system-wide (at the moment). It represents the current high-water mark of virtual memory in use at this point in time. If the current commit charge is always less than the size of your installed RAM then you have plenty of RAM installed. Period.

If the current commit charge is consistently higher that installed RAM, and for long periods, then you need to think about a RAM upgrade
thanks for the info, that's pretty helpful. on HWInfo, the Committed Virtual Memory is listed as 11,000mb (I have Microsoft Word open now, so it's a bit higher than my first screenshot)

similarly, on Task Manager, under the Performance tab it has a "Committed" number of 11gb/32gb. is this what you're referring to when you say Commit Charge? either way I would imagine 32gb ram should mean I won't have this kind of problem, right? I'm just trying to get as much info as I can
 
commit limit is set based on page file + ram. It can shrink and increase based on usage.

commits are just what you are using now, you have 21gb free. Nothing to worry about.

Yours is fine, its mine that is wonky as I thought my page file was 4gb but its actually 24gb. The blame is on Diablo 4 having a memory leak.
 
commit limit is set based on page file + ram. It can shrink and increase based on usage.

commits are just what you are using now, you have 21gb free. Nothing to worry about.

Yours is fine, its mine that is wonky as I thought my page file was 4gb but its actually 24gb. The blame is on Diablo 4 having a memory leak.
huh, interesting. I guess I was concerned because I noticed my Virtual Memory Load/Usage was at 30% on idle and thought it might be bad but thanks again though
 
Everyone's definition of idle is different. You may have more/less things running than others. My load percentage is about 35% which is about normal for me.

Kzm5NrD.jpg

with 32gb of ram, I never really bothered. Windows will look after memory. Only really have to think about it if you ever get out of memory errors. And even then, that is the fault of a driver, not you.
 
similarly, on Task Manager, under the Performance tab it has a "Committed" number of 11gb/32gb. is this what you're referring to when you say Commit Charge? either way I would imagine 32gb ram should mean I won't have this kind of problem, right? I'm just trying to get as much info as I can
Yes. The left-hand number is the current system commit charge. The right-hand number is the absolute maximum commit value - it's the sum of RAM plus the current page file size.

With a commit charge of 11GB there is 21GB of RAM that is effectively idle.