1. A method for managing memory in a host where virtual machines (VMs) execute, the method comprising: determining an amount of heap memory that has been reserved in a Java virtual machine (JVM) and that is in excess of heap memory needed by the JVM; reserving a Java object in the heap memory by a Java balloon agent, the Java object having a size equal to a size of one or more pages of memory in the host; loading the Java object with a first value, the loading being performed by the Java balloon agent; detecting by a virtual machine monitor (VMM) in the host that a machine physical memory page associated with the Java object has the first value; and freeing the machine physical memory page by the VMM.