Microrebooting is a technique used to recover from failures in crash-only software systems. Instead of rebooting the whole system, only subsets of fine-grain components are restarted. The granularity of components is typically finer than the process level (e.g., EJB-level in Java EE systems).
The goal of confining the reboot to fine-grain components is threefold: to reduce the amount of time it takes for the system to return to service, to minimize the failure's disruption to the system and its users, and to preserve as much in-memory application data as possible.
The concept was proposed in 2001 by George Candea and Armando Fox, while the former was a graduate student at Stanford University. It was initially reduced to practice in systems such as a satellite ground station control system and a Java EE application server; later on it formed the basis of the design of commercial systems like Aster Data Systems nCluster.