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