A TombStone is a design pattern, similar to (possibly a subset of) BridgePattern - however, TombStone serves a somewhat different purpose. TombStones are commonly found in GarbageCollectors/memory management systems, VirtualMachines, and the like. A TombStone is a fixed-size object, often containing little more than a pointer to a real object.
Some GarbageCollectors and VirtualMachines use TombStones to decouple the references to an object stored elsewhere in the program (within other objects, or in variables) with its actual location. All references to the object are really references to the TombStone; the TombStone holds the sole pointer to the object itself. (The TombStone might also hold a pointer to a VeeTable or something similar; as a performance optimization - the important thing is that the TombStone is of fixed size. Other metadata might appear as well, such as scratchpad space for the GarbageCollector). TombStones are typically held in their own area of memory (the TombstonePool?) as a cache optimization.
The JavaVirtualMachine specification specifically allows (but does not require) use of TombStones. Anyone know which JVMs use TombStones and which don't? Many SmallTalk implementations use TombStones (see ObjectTable, ObjectTableEntry)
Consequences of using TombStone:
Is the above text attempting to describe a Smalltalk ObjectPointer/ObjectTableEntry? Is there a problem with using the terms ObjectPointer and ObjectTableEntry?
See also BridgePattern EnvelopeLetter HandleBodyPattern DanglingPointer
Why are they called "tombstones"?
This sounds a lot like the Mac OS "handle" concept. -- TaralDragon
The tombstone I've heard of is the remnant of a deleted object in ActiveDirectory. You need something to say this object used to exist, so that replication from another copy that hadn't got the deletion doesn't accidentally resurrect the object. Called DeletionStub?s in LotusNotes.
Conceptually it's subset of ProxyPattern because outer object controls access to inner.