The PointerPair class (See Figure 3.23) is derived from the PersistentPointer class. The additional feature of the class is that it contains the reference pointer to the persistent object that the PersistentPointer points.
As implemented in the OffsetChunkPair class (See Section 3.3.8), treating the double representations of pointers to a persistent object as a pair is fairly effective.
In addition, using a persistent pointer placed in the persistent storage leads to a serious collision problem. When such pointer is grabbed, the grabbing flag in the persistent storage is modified. If the pointer is synchronized without clearing the flag, the pointer can not be grabbed afterwards. In read-only grabbing, the collision becomes more serious.
For these two reasons, all the PersistentPointer objects must be manipulated on the usual main memory. Copying the pointers to the PointerPair objects will meet the needs.
The reference pointer just converted is stored in the member variable obj and convertible to a pointer to a PersistentObject object.