Windows 8.1: Constant 'Low Memory' warnings with 5GB of free memory

Anonymous
2013-12-11T19:24:33+00:00

I'm getting these 'Low Memory' warnings constantly it's getting really annoying (like everything else in this OS).  I'm running Win8.1 64bit with 8GB of RAM, as soon as it passes 3GB of RAM used these warnings appear telling me to close various programs.  No 32bit processes are nearing their 2GB limit, the RAM's memtest indicates no issues.  How do I stop these warnings!?!

Windows for home | Previous Windows versions | Performance and system failures

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments
Answer accepted by question author
Anonymous
2014-01-06T06:26:05+00:00

Windows 8 reserves a % or 2gb whichever is smaller for the paging file by default, this is more than enough for most use-cases.

@Bob Eyster - you should read http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx

The issue has absolutely nothing to do with the paging file.  It's 2/3rds empty when getting this error.  What appears to be happening is that the initial 4gb, which is available for 32bit applications, is being used by the 64bit applications causing it to think it's going to run out of 32bit addressing space once it hits the 4gb limit.  In reality the 64bit applications should be pushed into the 2nd 4gb space to make room fro the 32bit applications.  Unfortunately this error message doesn't seem to recognize the difference between the two and reports the error erroneously.  Calculating just the 32bit apps they are using less than 2.3gb of addressing space with 64bit using the remaining 0.9gb.

Was this answer helpful?

20+ people found this answer helpful.
0 comments No comments

56 additional answers

Sort by: Newest
  1. Anonymous
    2014-04-14T03:09:57+00:00

    I program in Windows and Linux.  Whoop-dido.

    My understanding comes from http://msdn.microsoft.com/en-us/library/windows/hardware/hh439648%28v=vs.85%29.aspx and in general terms is that it works as such:

    https://technet.microsoft.com/dynimg/IC183868.gif

    The physical memory can be RAM or paging file depending on the availability and requirements. 

    Even given the most stringent interpretation of the restrictions (a combined 4GB limit on all 32bit processes) and including every process running on my system at the time the error message pops up:  the total memory used ranges from 2.8 to 3.4 GB.  Even terminating all the major 32 bit processes the message continues to popup due to a single process, who's memory usage is less than 1.2GB at the high end (far shy of the 2GB of user space) the error message continues to pop up until it crashes with a buffer overflow or an "entirely virtual call" error.

    Was this answer helpful?

    0 comments No comments
  2. Anonymous
    2014-04-14T02:32:42+00:00

    There is so much fail with that post it's not even funny.  But lets look at that article you posted.

    It says:

    "Contrary to popular belief, virtual memory is not the same as "the pagefile," and cannot ever be disabled when Windows is running. Virtual memory is the system by which the processor and operating system conspire to lie to applications about the memory in the system. On 32-bit operating systems, the main lie is that every individual process has 2 GiB of private memory available to it, and that memory is linear: every byte of that memory has an address and these addresses are contiguous, starting at zero, and going all the way up to 2^31^. This address space is larger on 64-bit systems, but the basic principles are the same."

    Note the highlighted bit - can you not see how this could interfere with 32bit games and cause it to believe it's out of memory when there is actually plenty available?  Or games which do not expect linear memory.  Another issue that these so called "improvements" have caused is frequent "entirely virtual call" errors which are completely permissible in non-win8 environments. 

    Hate to break it to ya... There us ZERO fail in what I posted....what I posted was 100% accurate

    See my post to the other guy above. You quoted a proper article but 100% failed to understand it. I don't need articles. I program for windows, OSX, and ios. And I've done dos and windows coding since 1990

    like I said, you are finding good articles but failing to understand them. Probably because you don't program,, but those articles often don't explain the big picture

    Was this answer helpful?

    0 comments No comments
  3. Anonymous
    2014-04-14T02:29:26+00:00

    Windows 8 reserves a % or 2gb whichever is smaller for the paging file by default, this is more than enough for most use-cases.

    @Bob Eyster - you should read http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx

    The issue has absolutely nothing to do with the paging file.  It's 2/3rds empty when getting this error.  What appears to be happening is that the initial 4gb, which is available for 32bit applications, is being used by the 64bit applications causing it to think it's going to run out of 32bit addressing space once it hits the 4gb limit.  In reality the 64bit applications should be pushed into the 2nd 4gb space to make room fro the 32bit applications.  Unfortunately this error message doesn't seem to recognize the difference between the two and reports the error erroneously.  Calculating just the 32bit apps they are using less than 2.3gb of addressing space with 64bit using the remaining 0.9gb.

    I am sure this is the problem.  But what we do to fix it?

    That's an incorrect version of how memory works in windows, and about the most whacky explanation I've seen to date - especially how 32bit and 64bit apps used in a 64bit environment. If that's how you think how memory is used, you shouldn't give computer advice - seriously. Nothing bumps anything for anything. I think you are confused and thinking the system virtual adress space is what's assigned to executables and drivers.... It's not done that way... It hasn't been that way since ... Hmmm DOS. Dos had direct access to physical memory

    Every time an exe or driver is loaded or a program runs, it gets lied to. It gets a virtual address memory space - not to be confused with the SYSTEM VIRTUAL ADDRESS SPACE which is put together by the bios,CPU and windows memory manager and it's all virtualized. The pagefiles are often called virtual memory... And they are.. They are just an extension of the address space that's already been made. Even with no pagefiles, memory is virtualized. Pagefiles just extend the physical ram limit so you don't run out.. It's just additional virtual addresses. The only difference is that's it's SIMULATED ram on a file, on a hard drive :)

    Below is for a winx64 os only:

    Every time u run a 32bit program (or driver) it gets a 4gb virtual address space to use, 2gb for the app, and 2gb for the os which is shared with the actual os data so the program can properly work with the os. This does NOT mean 4gb of SYSTEM memory is reserved. It's just the virtual memory address space for the app to use

    A 32bit large address mode app that would normally get 3:1 in a 32bit win gets 8gb of virtual adress space. 4 for the app, 1 for the OS.

    64bit apps get a virtual address space of 128TB. Programs have access to use the first 8tb ... Address space in the middle us not used yet. Towards the end of the 128tb limit is where the os data resides. Clearly this can't be reserved in the main system memory tables :)

    All of this has NOTHING to do with use of system ram or the virtual memory created by physical plus page files(s)....... at at any given time, you have HUNDREDS if these virtual spaces running in windows. One for EVERY driver and exe loaded and running.

    What uses up your memory is the amount of code and data each of these use WITHIN their own virtual address space so if a 32bit app is run and given a 4gb Vir address space AND only 512mb is used ... Only 512mb of physical ram is used.. Which can be paged to physical ram or to a page file under proper circumstances. I'm over simplifying this as it gets VERY technical. Same with a 64bit game that uses 1.5gb... Only that 1.5gb gets mapped into the system virtual address space...NOT the whole 8TB!

    Let's go even more simple:

    So you have all these "virtual worlds" running under a great big system virtual address space...when memory pages in these worlds get used, they get mapped out to the real world. So your physical ram plus page files are FILLED with bits and pieces of data from all these worlds... When a work needs access to its data, it thinks it's getting it from its world.., in reality, it's coming from an address space mapped in the system virtual address space - the real world... But it doesn't know that

    How can they work with each other's share data? Easy!! That's why a copy of the real world os is simulated in these virtual worlds (basically they just point to the real data in the system address space.... It's not really "copied" into the little world...... The "is data" is Near the 128tb cap for 64bit apps, near the 4gb-5gblimit for 32bit apps (depending how the 32bit app was compiled)

    hopefully..  You and JMJimmy1 now understand 

    I'm not trying to insult you... I want you to understand. So many people get this wrong. Theres a lot of **** on the net. It's best you get info like this right from ms...but funny thing ms and windows do all this virtually identical :)

    Was this answer helpful?

    0 comments No comments
  4. Anonymous
    2014-04-14T02:17:24+00:00

    There is so much fail with that post it's not even funny.  But lets look at that article you posted.

    It says:

    "Contrary to popular belief, virtual memory is not the same as "the pagefile," and cannot ever be disabled when Windows is running. Virtual memory is the system by which the processor and operating system conspire to lie to applications about the memory in the system. On 32-bit operating systems, the main lie is that every individual process has 2 GiB of private memory available to it, and that memory is linear: every byte of that memory has an address and these addresses are contiguous, starting at zero, and going all the way up to 2^31^. This address space is larger on 64-bit systems, but the basic principles are the same."

    Note the highlighted bit - can you not see how this could interfere with 32bit games and cause it to believe it's out of memory when there is actually plenty available?  Or games which do not expect linear memory.  Another issue that these so called "improvements" have caused is frequent "entirely virtual call" errors which are completely permissible in non-win8 environments.

    Was this answer helpful?

    0 comments No comments