長期運行的系統級守護進程/服務若發生意外關機,需從檢查點檔案恢復狀態。使用參考計數智慧指標 (Reference-Counted Smart Pointers) 時,傳統序列化/反序列化會導致嚴重記憶體膨脹:反序列化時每遇到一個指標引用就建立新物件,造成同一邏輯物件在記憶體中存在多份副本,最終導致記憶體耗盡無法繼續運行。
std::map)。讀取物件資料時,先查快取:CJobDef:作業定義 (靜態屬性:命令、工作目錄、用戶 ID)。CJobInst:作業執行實例 (動態屬性:PID、參數、歷程)。CJobInst 可共享同一 CJobDef (多對一關係)。傳統反序列化:每個 CJobInst 反序列化時都建立新 CJobDef → 記憶體呈指數增長 (圖2)。
標記+快取法:所有 CJobInst 指向同一 CJobDef 實例 (圖1 邏輯保持)。
operator->/operator* 實現代理模式。boost::shared_ptr, std::shared_ptr, 自製)。此法為高可用性系統 (金融、電信、工控) 實現快速故障轉移的關鍵技術之一。