Vrijgegeven pagina-objectgrafen
Grote sequentiële taken kunnen schone pagina-eigendom-objectgrafen na elke pagina weggooien, terwijl voldoende bronmetadata wordt behouden om de pagina op verzoek opnieuw te materialiseren
Vrijgavegrens
ReleaseLoadedPageObjectGraph geeft de geselecteerde indirecte pagina-root en de direct-eigendom geneste objecten eronder vrij
De traversal volgt geen indirecte koppelingen, zodat gedeelde lettertypes, afbeeldingen, resourcewoordenboeken, paginaboom-knooppunten en andere cross-pagina-objecten in eigendom van het geladen document blijven
Pagina-specifieke display-list- en rasteritems worden op dezelfde grens verdreven
Veiligheid en behoud
Vieze, must-write-, actieve of anderszins niet-opnieuw-laadbare pagina's worden behouden en gerapporteerd in plaats van weggegooid
Direct-bestands-ondersteunde pagina-roots herladen vanuit hun gevalideerde cross-reference-offset, terwijl gecomprimeerde roots herladen via het geïndexeerde objectstroom-lidpad
Stream-geladen of versleutelde gewone roots zonder een onafhankelijk afspeelbare bron blijven resident
Sequentiële verwerking
for PageIndex := 0 to PDF.LoadedPageCount - 1 do
begin
ProcessLoadedPage(PDF, PageIndex);
PDF.ReleaseLoadedPageObjectGraph(PageIndex);
end;
Een regressiefixture met 100.000 pagina's piekt op 69,3 MiB op Win32, toont geen steady-state-groei en rematerialiseert vervolgens een vrijgegeven pagina met zijn oorspronkelijke objectnummer en paginakaders
Concurrentie
Geladen-document-graaftoegang blijft geserialiseerd door de aanroeper
Geef een pagina niet vrij terwijl een andere thread dezelfde documentinstantie weergeeft, inspecteert of muteert
Zie ook: ReleaseLoadedPageObjectGraph, GetLoadedPageObjectGraphReleaseStatistics, THPDFPageObjectGraphReleaseStatistics, Luie paginatree-lading, Begrensde objectstroom-cache