1. A method of managing memory of a database management system running on a guest operating system in a virtual machine, the virtual machine being instantiated on a host computer, the method comprising: determining, by a controller running in the database management system, that a hypervisor has issued a first command to request memory from a driver running in the guest operating system of the virtual machine for re-allocation by the hypervisor; in response to determining that the hypervisor has issued the first command, performing: determining, by the controller, one or more memory pools in a plurality of memory pools, each memory pool managing a portion of memory allocated to the database management system; issuing, by the controller, one or more second commands to the one or more memory pools to analyze respective portions of memory, wherein the one or more memory pools determine memory to release from respective portions of memory based on a respective memory management policy for the one or more memory pools; and releasing, by the controller, an amount of memory allocated to the database management system in accordance with the memory that the one or more memory pools determined to release from respective portions of memory to the guest operating system, wherein the guest operating system allocates the released memory to the driver for satisfying the first command.