Why does Windows 7 64-bit require more memory than 32-bit?
Solution 1:
I don't have any special information about the upgrade advisor, but here are a couple possibilities:
There's not much reason to use 64-bit unless you're going to have more than 3GB of RAM, as the extra address space won't do much for you. There are some special-case reasons, like high security applications or certain media processing, but in general memory address space is the reason to use a 64-bit OS at the moment.
64-bit OSes DO use more space to store memory addresses, as each address is generally twice as long (this isn't totally precise, but a generalization here will do). This means that storing the locations of data in memory takes more memory itself. Again, however, this isn't really a reason not to use a 64-bit OS, because if you are using one you are probably taking advantage of its increased address space anyway with a decent amount of RAM.
Solution 2:
Reasons behind this might be:
- this is meant to act as a kind of advisory on which version to choose. If you have 1 GB of RAM, you are quite unlikely to ever upgrade the system to more then 2 GB, therefore 64b would have no benefits for you.
- the actual system requirements as given by those who have really tested the OS might look something like "Win7 x86 edition requires 0.8 GB RAM, x64 edition requires 1.1 GB of RAM". As those numbers are always rounded up to a nearest GB, you end with 1 GB and 2 GB even.
I think x64 Win7 would run on 1 GB very similar to x86 edition. There is a little difference caused by larger pointer size, but it definitely will not cause memory consumption to grow more than 20 %, but unless you have more RAM, there is very little reason to use 64b OS.
That said, there might be other situations where x64 edition will really need to a lot more memory. Consider scenario where you run multiple applications, some of them are 64b, others are 32b. Each application requires DLLs which match its bit-ness - hence you will also need many components to be loaded twice, 32b and 64b, or at least to have 32b-64b translation layers loaded instead of them.