Summary: Using Virtual Addresses as Object References
Jeff Chase, Hank Levy, and Ashutosh Tiwary
Department of Computer Science and Engineering FR35
University of Washington
Seattle, WA 98195
Most objectoriented systems that support distributed or persistent data structures use
softwareinterpreted object identifiers for interobject referencing. These identifiers are often
called pointer surrogates, because they are used as substitutes for virtual memory pointers.
Surrogates are the traditional means of referencing objects that are viewed as existing ``outside''
of an application's virtual address space, e.g., because they reside in a database.
An alternative to surrogates is to use ordinary virtual addresses for interobject referencing.
Usually (but not always) this involves mapping distributed or persistent data into specified
parts of the application's address space, relying on page faults to trap and resolve references to
The choice between these two referencing schemes involves tradeoffs. Virtual addresses
promise easier integration with programming languages and faster local pointer dereferences,
whereas surrogates can simplify objectbased aspects of storage management, such as garbage
collection and heap compaction.