1. A virtual machine (VM) co-location method comprising: selecting a VM from amongst a plurality of VMs for server colocation; computing an individual shared memory factor for each of a set of the plurality of VMs with respect to the selected VM by creating a first Bloom filter for each of the VMs in the set, by creating a second Bloom filter for the selected VM, wherein the first Bloom filter and the second Bloom filter are startup Bloom filters when a new VM placement is performed for the selected VM, and the first Bloom filter and the second Bloom filter are current Bloom filters when a live migration is performed for the selected VM, and by computing a logical AND operation between sum of an intersection of values of the first Bloom filter and corresponding values of the second Bloom filter for each of the VMs in the set and by adding bits of a result of the AND operation for each of the VMs to produce the individual shared memory factor for each of the VMs in the set; determining a VM amongst the VMs in the set associated with a highest computed shared memory factor; and, co-locating the determined VM with the selected VM in a single server.