已釋放頁面物件圖形

大型循序工作可以在每頁處理完後捨棄乾淨的頁面自有物件圖形,同時保留足夠的來源中繼資料,需要時再把該頁具現化回來

釋放邊界

ReleaseLoadedPageObjectGraph 釋放選定的間接頁面根及其下直接擁有的巢狀物件

遍歷不追蹤間接連結,因此共享的字型、影像、資源字典、頁面樹節點與其他跨頁物件仍由已載入文件擁有

頁面專屬的顯示清單與點陣項目在同一邊界被驅逐

安全性與保留

髒、必寫、使用中或其他無法重新載入的頁面會被保留並回報,而不是被捨棄

直接以檔案為後盾的頁面根從其已驗證的交叉參考位移重新載入,壓縮根則透過已索引的物件串流成員路徑重新載入

以串流載入或加密、且沒有可獨立重播來源的一般根保持常駐

循序處理

for PageIndex := 0 to PDF.LoadedPageCount - 1 do
begin
  ProcessLoadedPage(PDF, PageIndex);
  PDF.ReleaseLoadedPageObjectGraph(PageIndex);
end;

100,000 頁的回歸測試檔在 Win32 上峰值 69.3 MiB、無穩態成長,之後把已釋放的頁面以其原始物件編號與頁面框重新具現化

並行

已載入文件的圖形存取仍由呼叫端序列化

其他執行緒正在轉譯、檢視或變更同一文件執行個體時,不要釋放頁面

另請參閱: ReleaseLoadedPageObjectGraph, GetLoadedPageObjectGraphReleaseStatistics, THPDFPageObjectGraphReleaseStatistics, 惰性頁面樹載入, 有界物件串流快取