Grafi di oggetti di pagina rilasciati
I job sequenziali grandi possono scartare i grafi di oggetti puliti di proprietà della pagina dopo ogni pagina, conservando abbastanza metadati della sorgente da materializzare di nuovo la pagina on demand
Confine di rilascio
ReleaseLoadedPageObjectGraph libera la radice di pagina indiretta selezionata e gli oggetti annidati di proprietà diretta sotto di essa
L'attraversamento non segue i link indiretti, quindi font, immagini, dizionari di risorse, nodi del page tree e altri oggetti cross-page condivisi restano di proprietà del documento caricato
Le voci display-list e raster specifiche della pagina vengono evinte allo stesso confine
Sicurezza e ritenzione
Le pagine dirty, must-write, attive o per altri motivi non ricaricabili vengono conservate e segnalate invece di essere scartate
Le radici di pagina direttamente file-backed si ricaricano dal loro offset cross-reference validato, mentre le radici compresse si ricaricano attraverso il percorso indicizzato dei membri object-stream
Le radici ordinarie caricate da stream o cifrate senza una sorgente indipendentemente riutilizzabile restano residenti
Elaborazione sequenziale
for PageIndex := 0 to PDF.LoadedPageCount - 1 do
begin
ProcessLoadedPage(PDF, PageIndex);
PDF.ReleaseLoadedPageObjectGraph(PageIndex);
end;
Una fixture di regressione da 100.000 pagine tocca un picco di 69,3 MiB su Win32, non mostra crescita a regime e poi ri-materializza una pagina rilasciata con il suo numero di oggetto originale e le page box originali
Concorrenza
L'accesso al grafo del documento caricato resta serializzato dal chiamante
Non rilasciare una pagina mentre un altro thread sta renderizzando, ispezionando o mutando la stessa istanza del documento
Vedi anche: ReleaseLoadedPageObjectGraph, GetLoadedPageObjectGraphReleaseStatistics, THPDFPageObjectGraphReleaseStatistics, Caricamento lazy del page tree, Cache object-stream con limiti