Mobile Networks and Applications

, Volume 14, Issue 1, pp 53–64 | Cite as

Recoverable Class Loaders for a Fast Restart of Java Applications

  • Vladimir Nikolov
  • Rüdiger Kapitza
  • Franz J. Hauck


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


Java OSGi start-up overhead snapshot 


  1. 1.
    Borman S, Paice S, Webster M, Trotter M, McGuire R, Stevens A, Hutchison B, Berry R. A serially reusable Java (TM) virtual machine implementation for high volume, highly reliable, transaction processing. Technical Report TR 29.3406, IBM Hursley, Hursley Park, UKGoogle Scholar
  2. 2.
    Candea G, Kawamoto S, Fujiki Y, Friedman G, Fox A (2004) Microreboot—a technique for cheap recovery. In: OSDI’04, USENIX, Berkeley, 5 December 2004, pp 31–44Google Scholar
  3. 3.
    Standard Performance Evaluation Corporation (2008) SPEC JVM98 benchmarks.
  4. 4.
    Corrie B (2006) Java technology, IBM style: class sharing.
  5. 5.
    Czajkowski G, Daynès L, Nystrom N (2002) Code sharing among virtual machines. In: ECOOP ’02. Springer, London, pp 155–177Google Scholar
  6. 6.
    The IEEE and The Open Group (2004) mmap() the open group base specifications issue 6, IEEE Std 1003.1.
  7. 7.
    Jonkers HBM (1979) A fast garbage compaction algorithm. Inf Process Lett 9(1):26–30CrossRefGoogle Scholar
  8. 8.
    Kawachiya K, Ogata K, Silva D, Onodera T, Komatsu H, Nakatani T (2007) Cloneable JVM: a new approach to start isolated java applications faster. In: VEE ’07. ACM, New York, pp 1–11CrossRefGoogle Scholar
  9. 9.
    Lindholm T, Yellin F (1999) The Java (TM) virtual machine specification, 2nd edn. Sun Microsystems, EspooGoogle Scholar
  10. 10.
    Lougher R (2007) JamVM.
  11. 11.
    Lowell DE, Chandra S, Chen PM (2000) Exploring failure transparency and the limits of generic recovery. In: OSDI’00, USENIX, Berkeley, 22–25 October 2000, pp 289–304Google Scholar
  12. 12.
    Sun Microsystems (2004) JDK 5.0 Documentation.
  13. 13.
    Sun Microsystems (2007) Official Java EE website.
  14. 14.
    The OSGi Alliance (2005) OSGi service platform: core specification, release 4. Technical reportGoogle Scholar
  15. 15.
    Suezawa T (2000) Persistent execution state of a Java virtual machine. In: JAVA ’00: proc. of the ACM 2000 conf on Java Grande. ACM, New York, pp 160–167CrossRefGoogle Scholar

Copyright information

© Springer Science+Business Media, LLC 2008

Authors and Affiliations

  • Vladimir Nikolov
    • 1
  • Rüdiger Kapitza
    • 2
  • Franz J. Hauck
    • 1
  1. 1.Institute of Distributed SystemsUniversity of UlmUlmGermany
  2. 2.Department of Computer Sciences, Distributed Systems and Operating SystemsUniversity of Erlangen-NürnbergErlangenGermany

Personalised recommendations