64-bit made things worse, especially if using interpreted languages which often have convenient but complexly indirect structures.<p>E.g. creating this:<p><pre><code> d = dict((x,x * 42) for x in xrange(100000))
</code></pre>
a dictionary with 100k items in Python, takes up 10996 kB RSS memory on my 64-bit system, but 5200 kB RSS on a 32-bit Python (same Python version). You've got your dictionary hash buckets, the integer objects etc, all separately allocated objects. The integers themselves are also 64-bit.<p>Of course, if I really cared about the memory in the above case I'd create an array or even a list that fit the key/value pattern; the array array.array('i', (x*42 for x in xrange(100000))) stores the same information in the maximally compact form increasing RSS by about 500k.<p>But given a production system with 32G of memory memory optimisation is rarely being made.