By a recent trend, 64-bit machines are invading the end-user market. One major rumor keeps people from switching over: a 64-bit machine uses more memory then its 32-bit counterpart for the same job. For a 64-bit Virtual Machine, we tackle 2 reasons that nurish this rumor. For a given application we identify the key object types. Instances of these key types get allocated in a type specific high 64-bit virtual address range.
Then for these key 64-bit objects, we remove the enlarged object header and we reduce inter-object alignment. Information previously stored into the header, is now no longer uniformly accessible for all objects. The extra overhead to obtain this information is won back again for most benchmarks by the better memory layout in the heap. As a result we obtain applications that run equally fast, but allocate less memory.