Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

My desktop PC has 4GB of RAM but because I have Win XP 32 bit it shows only 3.2 GB. My new Qosmio laptop has also 4GB of RAM and also Win XP 32 bit. However, it shows only 2.98 GB or RAM.

The system has nVidia video card with 3GB or fast RAM. Not shared with the main memory. Direct X diagnostic tool shows only 1GB or video RAM.

Why? How to make my laptop to use 3.2 GB instead of 2.9?


There may be a solution to make a 32bits OS to really work with more than 4GB or RAM: http://thesunstroke.blogspot.com/2010/07/windows-32-bits-using-more-than-4gb-of.html

share|improve this question

2 Answers 2

up vote 3 down vote accepted

The 4.10⁹ addresses aren't reserved for system RAM only. There are other devices which need them. The biggest culprit is the video card RAM, but other things can use up address space as well. This is why the available RAM differs between computers. Probably your VC in the laptop uses 512 MB RAM, and the one in your desktop PC has a whole gigabyte.

The only way to get 300 MB more is to downgrade your hardware. Another video card would probably bring the highest gain. But before paying for new hardware, you should consider whether you need that RAM. Today, there aren't many applications which can use such amounts. So just monitor your RAM usage and if you don't fill it up often, stay the way you are. Especially as you're on XP, which doesn't use empty RAM as a cache to pre-load frequently used programs.

Edit: explanation why this answer is right when the video card doesn't share memory with the mainboard

Good external link, so you know I am not making it up: link

My own explanation. I kept it very easy, just to be sure you understand it even if you don't have much prior knowledge about how RAM works:

Let's try to use an analogy. You're a librarian, and use numbers to keep track of your books. Your labels only have place for 4 digits. Then you can only keep track of 9999 books. The only way to keep track of more books is to move to a 5-digit-label, but let's say that for some reason, it is very expensive to do that (e.g. you have a hand-held scanner for recognizing the numbers and it only can scan a small label). Now, if you only have an adult section, the limit there is 9999. But if you have a children's section, the books there need the labels too. If you tried to label them as "a" and "c", you could only label 999 books per section as the symbol uses up a digit-place on your small label. So instead, you just decide that books above a certain number are children's, and the remainder are for adults.

Now imagine that you get a large donation at once. After that, you have 12 000 adult books and 3 000 children books. You cannot move to a 5-digit-label soon. If you want to have adult books only, you could label 9999 of them. But if you want to have books for children too, and label 2000 books for children, you can only label 7999 adult books. As you cannot lend books if you cannot keep track of them, you can only put 7999 adult books in use. And the amount of how much books you can put in use depends on the amount of children's books, because both use up labels. The books are all physically there, just everything above the 9999th is unusable.

The same is happening in your computer. You are not labelling books, but memory bits. And your "label" in a 32-bit-system can only count from 0 to 2³²-1, which is 4 GB. So you can only use 4 GB memory total in your system. If there was a way to use this address space for your system memory only, you could use all 4 GB. But when you want to use 1 GB out of your 3 GB video memory, you can address 1 GB less of system memory, so only 3 GB. I understand that you actually have 7 GB of memory in chips (4 on the mainboard, 3 on the video card), but the 4 GB limit applies to the sum of all memory on the system, it doesn't count separately for the video card memory and separately for the system memory.

So your options are to 1. use a 64-bit-OS. The license costs money, and if your processor only supports 32 bit, you'll have to change the processor, and with it, probably the mainboard, too. So this option is very expensive, and probably some games won't run anymore. 2. Use another video card with less memory, preferably 512MB. Costs money and performance. 3. Do nothing.

share|improve this answer

There's a good chance that there will be no way. Simply BIOS uses some memory addresses as its own. Check out shadowing options in BIOS if you have any and disable them. Here's a link explaining shadowing: http://support.microsoft.com/kb/92766

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.
{"cc_re__cc_re__cc_by_sa_3_0": ["                  <li><a href=\"//area51.stackexchange.com\" title=\"proposing new sites in the Stack Exchange network\">Area 51</a></li>\r\n                        <li><a href=\"//careers.stackoverflow.com\">Stack Overflow Careers</a></li>\r\n                    \r\n                </ol>\r\n            </td>\r\n    </tr>\r\n</table>\r\n                </div>\r\n            </div>\r\n\r\n            <div id=\"copyright\">\r\n                site design / logo &#169; 2015 stack exchange inc; user contributions licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\" rel=\"license\">cc by-sa 3.0</a>                   with <a href=\"http://blog.stackoverflow.com/2009/06/attribution-required/\" rel=\"license\">attribution required</a>\r\n            </div>\r\n            <div id=\"svnrev\">\r\n                rev 2015.1.25.2220\r\n            </div>\r\n            \r\n        </div>\r\n    </div>\r\n    <noscript>\r\n        <div id=\"noscript-warning\">Super User works best with JavaScript enabled<img src=\"http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif\" alt=\"\" class=\"dno\"></div>\r\n    </noscrip"], "copyright__copyright__copyright": ["thing.\n\nshare|improve this answer\n\nThere's a good chance that there will be no way. Simply BIOS uses some memory addresses as its own. Check out shadowing options in BIOS if you have any and disable them. Here's a link explaining shadowing: http://support.microsoft.com/kb/92766\n\nshare|improve this answer\n\nYour Answer\n\n\u00a0\ndiscard\n\nBy posting your answer, you agree to the privacy policy and terms of service.\n\nNot the answer you're looking for? Browse other questions tagged or ask your own question."]}