Recoverable Class Loaders for a Fast Restart of Java Applications

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%.