1. A computer program product including computer-usable program code embodied on a non-transitory computer-usable storage medium, the computer program product comprising: computer-usable program code for analyzing the software image content of a plurality of virtual machines running on a plurality of hypervisors in a common migration domain; computer-usable program code for identifying two or more of the virtual machines having greater than a threshold amount of common memory pages; computer-usable program code for placing the two or more virtual machines under a common hypervisor; computer-usable program code for increasing the amount of common memory pages between a first virtual machine and a second virtual machine by moving a workload of the first virtual machine from a first operating system to a second operating system that is used by the workload of the second virtual machine; and computer-usable program code for sharing the common memory pages among the two or more virtual machines.