We present recoverable class loaders to enable a fast start-up and recovery of Java applications. This is achieved by snapshooting the static state of Java applications namely the class loaders and their associated class objects, which are then recovered during subsequent restarts. Recoverable class loaders are especially useful in the context of mobile applications and mobile services. First, they allow to speed up shutdown and restart of applications for power- and resource-management reasons on resource-restricted mobile devices. Second, services can be much faster rebooted to cure software faults such as memory leaks thereby improving the availability of services. We implemented recoverable class loaders inside the JamVM and the OSGi middleware Oscar. For both cases of use—Java application restart and service recovery—we provide experimental evaluations that show a substantially reduced start-up time from up to 96%.
[1]
George Candea,et al.
Microreboot - A Technique for Cheap Recovery
,
2004,
OSDI.
[2]
Alan P. Stevens,et al.
A Serially Reusable Java ( tm ) Virtual Machine Implementation for High Volume , Highly Reliable , Transaction Processing TR 29 . 3406
,
2001
.
[3]
Toshio Nakatani,et al.
Cloneable JVM: a new approach to start isolated java applications faster
,
2007,
VEE '07.
[4]
H. B. M. Jonkers,et al.
A Fast Garbage Compaction Algorithm
,
1979,
Inf. Process. Lett..
[5]
Takashi Suezawa,et al.
Persistent execution state of a Java virtual machine
,
2000,
JAVA '00.
[6]
Nathaniel Nystrom,et al.
Code Sharing among Virtual Machines
,
2002,
ECOOP.
[7]
Peter M. Chen,et al.
Exploring failure transparency and the limits of generic recovery
,
2000,
OSDI.