Serbest Bırakılan Sayfa Nesne Grafları

Büyük sıralı işler, sayfayı gerektiğinde yeniden oluşturmaya yetecek kadar kaynak meta verisini saklayıp her sayfanın ardından sayfaya ait temiz nesne graflarını serbest bırakabilir

Serbest bırakma sınırı

ReleaseLoadedPageObjectGraph, seçili dolaylı sayfa kökünü ve altındaki doğrudan sahip olunan iç içe nesneleri serbest bırakır

Gezinti dolaylı bağlantıları takip etmez; böylece paylaşılan yazı tipleri, görseller, kaynak sözlükleri, sayfa ağacı düğümleri ve diğer sayfalar arası nesneler yüklenmiş belgenin mülkiyetinde kalır

Sayfaya özgü display-list ve raster girdileri aynı sınırda dışarı atılır

Güvenlik ve elde tutma

Dirty, must-write, aktif veya başka bir nedenle yeniden yüklenemeyen sayfalar atılmak yerine elde tutulur ve raporlanır

Doğrudan dosya destekli sayfa kökleri doğrulanmış cross-reference offset'lerinden yeniden yüklenir; sıkıştırılmış kökler ise indekslenmiş object-stream üye yolu üzerinden yeniden yüklenir

Bağımsız olarak yeniden oynatılabilir bir kaynağı olmayan stream'den yüklenmiş veya şifreli normal kökler bellekte kalır

Sıralı işleme

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

100.000 sayfalık bir regression fixture, Win32'de 69.3 MiB ile zirve yapar, kararlı durumda büyüme göstermez ve ardından serbest bırakılan bir sayfayı özgün nesne numarası ve page box'larıyla yeniden oluşturur

Eşzamanlılık

Yüklenmiş belge grafına erişim, çağıran tarafın serileştirmesine bağlı kalır

Başka bir thread aynı belge örneğini render ederken, incelerken veya değiştirirken bir sayfayı serbest bırakmayın

Ayrıca bkz.: ReleaseLoadedPageObjectGraph, GetLoadedPageObjectGraphReleaseStatistics, THPDFPageObjectGraphReleaseStatistics, Lazy Page-Tree Loading, Bounded Object-Stream Cache