Where does our Icee process checkpointer fit in? In its pros and cons it is most like an operating system support technique. It sits transparently underneath a modified JVM. That transparency has advantages for implementation and orthogonality, but disadvantages for how data is stored and how much data can be stored.

Please note that I don't claim this to be the best technique for Java persistence; instead, I mean only to describe its place in a constellation of persistence techniques.