1. A data processing system comprising: a plurality of virtual machines each having associated memory pages; a shared memory page cache that is accessible by each of the plurality of virtual machines; and a global hash map that is accessible by each of the plurality of virtual machines; where for a particular memory page stored in the shared memory page cache that is associated with two or more of the plurality of virtual machines there is a single key stored in the global hash map that identifies at least a storage location in the shared memory page cache of the particular memory page.