1. A method that facilitates sharing an object containing embedded references to non-shared objects, comprising: looking up the object in a shared memory area, wherein the shared memory area is mapped to the same first virtual address by all sharing processes; if the object does not exist in the shared memory area, creating the object within the shared memory area, and setting embedded references in the object to point to entries in an indirection table located at a second virtual address; wherein each sharing process maintains its own private version of the indirection table located at the same second virtual address; and performing a private initialization operation on the object for a specific process by setting references in the private version of the indirection table for the specific process to point to non-shared objects located in a private memory area for the specific process; whereby each sharing process can maintain its own private versions of the non-shared objects.