Some time ago, I upgraded my laptop from 4GB of memory to 8GB. Naturally, I wanted to be sure that I was using all of the memory.
Since I was running Windows Vista 32-bit, I started using a ramdisk in the upper 4GB of memory and placed my swap/page file there, providing unbelievably fast access. But that's a different story.
As I browsed forum posts and Microsoft documentation, I came across an msconfig setting labeled: Maximum memory.
Now you might think, as I did, the checking a box labeled "Maximum memory" would give you - yes, Maximum memory. Yes, you might think that, and you would be wrong.
I can think of much better labels for that checkbox:
You get the idea. There are a bazillion ways to disambiguate the label for that checkbox. Some engineer somewhere is laughing his ass off at me because I thought that checking a checkbox labeled Maximum memory would indeed give me maximum memory! How incredibly stupid of me!
The interesting thing is, when you check the checkbox, a number appears below. In my case, it was 3072. Not knowing for sure what to expect there, I assumed that that number was indeed the maximum memory that my system could use. Keep in mind my OS is 32 bit and that number will be below 4GB minus BIOS area minus display adapter RAM theft minus Microsoft hocus-pocus. So how am I to know exactly what to expect there?
However, for some mysterious reason known only to Microsoft, that number is not the maximum number but roughly 500 MB less than the maximum. If you check the checkbox, and leave the number in place that is suggested for you, you just lost half a gigabyte of RAM. And no, you can't click it higher. Only lower.
And that's exactly what happened to me. Take a look at the before and after images below:
Msconfig maximum memory issue
Note: To 64-bit fanboys: I have a boatload of 32-bit software that would either run in slug mode under a 64-bit version of windows, or cost me arm+leg to upgrade, reinstall, reconfigure, and - love this - re-patch. Nothing I run needs a 64-bit address space, and all my program pages are in RAM, just like yours (assuming you have enough RAM to hold them). Paging from a ramdisk is instantaneous to a human being. Regard: