Graphes d'objets de page libérés
Les grands travaux séquentiels peuvent écarter les graphes d'objets de page propres après chaque page tout en conservant assez de métadonnées de source pour matérialiser à nouveau la page à la demande
Frontière de libération
ReleaseLoadedPageObjectGraph libère la racine de page indirecte sélectionnée et les objets imbriqués possédés directement en dessous de celle-ci
La traversée ne suit pas les liens indirects, de sorte que les polices, images, dictionnaires de ressources, nœuds d'arbre de pages et autres objets inter-pages partagés restent possédés par le document chargé
Les entrées de liste d'affichage et raster spécifiques à la page sont évincées à la même frontière
Sécurité et conservation
Les pages modifiées, à écrire obligatoirement, actives ou autrement non rechargables sont conservées et signalées au lieu d'être écartées
Les racines de page adossées à un fichier se rechargent depuis leur décalage de références croisées validé, tandis que les racines compressées se rechargent via le chemin de membre de flux d'objets indexé
Les racines ordinaires chargées par flux ou chiffrées sans source rejouable indépendamment restent résidentes
Traitement séquentiel
for PageIndex := 0 to PDF.LoadedPageCount - 1 do
begin
ProcessLoadedPage(PDF, PageIndex);
PDF.ReleaseLoadedPageObjectGraph(PageIndex);
end;
Une fixture de régression de 100 000 pages plafonne à 69,3 Mio sur Win32, ne montre aucune croissance en régime permanent, puis rematérialise une page libérée avec son numéro d'objet et ses boîtes de page d'origine
Concurrence
L'accès au graphe de document chargé reste sérialisé par l'appelant
Ne libérez pas une page pendant qu'un autre thread rend, inspecte ou modifie la même instance de document
Voir aussi : ReleaseLoadedPageObjectGraph, GetLoadedPageObjectGraphReleaseStatistics, THPDFPageObjectGraphReleaseStatistics, Chargement paresseux d'arbre de pages, Cache de flux d'objets borné