Dynamic memory allocation is a memory management technique in which a program can request and return memory while it is executing.
In a virtualized environment, available memory on a physical host is pooled and distributed to virtual machines (VMs) that are running on that host when needed. If a virtual machine isn’t using all of the memory it’s been allocated, the host may allocate one VM's idle memory to another VM.
Dynamic memory allocation is best suited for workloads that have regular and predictable fluctuations in memory demands.
See also: Microsoft Hyper-V Dynamic Memory, VMware memory overcommit