A little more exploration... I've put away one of my 256Mb sticks and stayed with 256Mb. For me my heuristics didn't work, so it consumed same 700Mb (I had to take some sleep before it loaded).
Probably it does not work below 512Mb, and those 690Mb is just a floor, and the game can't run below. I will try my executable with some 1Gb systems to check if it will help at least to 1Gb systems. It will be funny to see that it helps everyone except me....
Also during one of my tests I managed to make Civ4.ex dying slowly (pressed exit to desktop, alt-tab AFAIK), and in task manager I noticed that it frees its memory in 10-20 chunks... Mostly looks like very ineffective API calls where simple 'malloc' or alike would do. BTW, Python uses malloc and malloc only, but still Pythong is the only facility here conceptual enough facility to claim entire RAM for it. Well, probably there are two instances of it are running...
You may help me testing if you want. I am particularly interested in VM size when the game loads (my fix is attached). It reports 4 times less used/total RAM. Just start 'Civ4Fix.exe' from civ4 folder instead of Civilization4.exe on some heavy savegame of yours.
I have attached source files (for VC++ 6.0) to assure that I spread no bulls**t into your system. Personally I would be afraid launching unknown exe
I recommend to stop any spyware/adware removal services before testing because this program affects Civilization4.exe the way these "wares" usually do. It does not affect executable itself, it changes only its image loaded into memory.
It will work only under 2K/XP.