To add to this, the hypervisor can do more to integrate with the guest so that this issue is mitigated somewhat. For example, with KVM and a Linux guest there's a lot of optimizations to share memory pages between the two.
For reference: https://access.redhat.com/documentation/en-us/red_hat_enterp....