A virtual heap for a process executing within a virtual machine is described.
In
one embodiment, the virtual persistent heap may allow the running of an application
on a physical heap that is smaller than may otherwise be required. As an example,
the virtual persistent heap may be an order of magnitude larger than the physical,
in-memory heap. This feature is important for small consumer and appliance devices,
as these devices may have a limited amount of memory. In one embodiment, the virtual
heap may be maintained on non-volatile memory storage external to the device running
the virtual machine, and portions of the heap for the current execution state of
the process may be cached in and out of a "physical" heap resident in local memory
on the device. For example, the device may connect to a server on the Internet,
and the server may provide non-volatile storage space for the virtual heap. In
another embodiment, the external storage for the virtual persistent heap may reside
on a non-volatile storage attached to the device, for example, a Flash card or
hard disk drive. In one embodiment of the virtual heap, the entire heap for a process
may be made persistent. The virtual persistent heap may enable the checkpointing
of the state of the computation of a virtual machine, including processes executing
within the virtual machine, to a persistent storage such as a disk or flash device
for future resumption of the computation from the checkpoint. The Virtual Persistent
Heap also may enable the migration of the virtual machine computation states, and
thus the migration of executing processes, from one machine to another. The saved
state of the virtual machine heap may also provide the ability to restart the virtual
machine after a system crash or shutdown to the last saved persistent state, and
to restart a process that was running within the virtual machine prior to the system
crash or shutdown to a checkpointed state of the process stored in the virtual
persistent heap. This persistent feature is important for small consumer and appliance
devices, as these appliances may be shutdown and restarted often.