Logical logging to extend recovery is described. In one aspect, a
dependency cycle between at least two objects is detected. The dependency
cycle indicates that the two objects should be flushed simultaneously
from a volatile main memory to a non-volatile memory to preserve those
objects in the event of a system crash. One of the two objects is written
to a stable of to break the dependency cycle. The other of the two
objects is flushed to the non-volatile memory. The object that has been
written to the stable log is then flushed to the stable log to the
non-volatile memory.