Check out the new USENIX Web site. next up previous
Next: Acknowledgments Up: Automatic Persistent Memory Management Previous: Related Work


Conclusion

We extended the functionality of the Spotless VM with automatic memory management that provides orthogonal persistence, including thread state. Java programs running on the Spotless VM are continuous processes: they can be suspended and then later resumed at exactly the same point of execution as where they left off. They may even be resumed on a different device, since suspended programs can simply be beamed between Palm organizers.

Given the described enhancements to the Spotless VM, it is no longer necessary for the programmer to use a Palm database for making data persistent. Palm databases are only needed to share data among applications.

There is one exceptional situation in which programmers do need to write persistence-related code: to maintain external resources that are not under the control of the Spotless runtime system. For such cases, we provide a callback API to include these resources in the suspension/resumption phases. Leveraging the automatic persistence of threads and synchronization primitive, such callbacks can be scheduled and executed without compromising data consistency.

Generally, external resources should be dealt with at the library level, such that the application programmer is completely unburdened from the task of achieving persistence.

Our main approach is to represent program images directly in stable memory (battery-backed RAM). Because the OS can move memory blocks representing dormant programs around, we build on top of a compacting GC to relocate pointers on program resumption.

Compared with the previous Spotless VM, there is no loss in execution speed, no increase in application footprint and only a small increase in VM footprint (about 4KB or 5%).


next up previous
Next: Acknowledgments Up: Automatic Persistent Memory Management Previous: Related Work

2001-02-27