Persistent execution state of a Java virtual machine

Current work on persistency in Java does not consider. the execution environment of the threads and this is one of the reasons why persistence has not been addressed by the Java high-performance community. Equipping high-performance computing systems with checkpointing and recovery mechanisms allows to minimise work loss in presence of failure. This paper discusses concepts for checkpointing and recovery of running Java virtual machines (JVM). Checkpointing a JVM is to capture the execution state of the JVM and to make this s tate persistent. In order to recover the checkpointed execution state, it is necessary to reproduce the execution state and to resume the JVM. In other words checkpointing and recovery allows the reconstruction of a JVM at any arbitrary execution state. The checkpointing and recovery concepts have been prototypically implemented. The prototype provides generic mechanisms for extracting an execution state from a running JVM and for initialising a JVM with a persi tent execution state. These mechanisms can be used for a wide range of applications. Our prototype also uses these mechanisms for JVM migra t ion (relocation of a running JVM from one computer to another computer). General Terms Persistence, Java, JVM, execution state, checkpointing, recovery