1. A computer-implemented system for managing physical memory assigned to Virtual Machine (VM), the system comprising: a host having a host OS and a physical memory; at least one Virtual Machine (VM) running on the host OS; at least one Guest application running on a Guest OS of the VM and consuming physical memory allocated to the VM; a balloon agent running on the Guest OS of the VM configured to collect Guest statistics and to calculate a Working Set Size (WSS) based on the Guest statistics, wherein the balloon agent designates at least some memory as being associated with a fake Guest application that the VM treats as an allocated memory; and a Hypervisor configured to receive the WSS via a Virtual Machine Monitor (VMM) and to collect virtualization statistics, wherein the Hypervisor adjusts a size of a ballooned memory and reallocates memory to the VM, and wherein the size of the balloon memory is adjusted as: 
 BalloonSize=PhysicalTotal−WSS−gap where PhysicalTotal is an allocated memory amount of the Guest OS and gap is a value that compensates for WSS estimation error based on machine learning.