Grafos de objeto de página liberados
Trabalhos sequenciais grandes podem descartar grafos de objeto de página limpos após cada página, retendo metadados de origem suficientes para materializar a página novamente sob demanda
Limite de liberação
ReleaseLoadedPageObjectGraph libera a raiz de página indireta selecionada e os objetos aninhados de propriedade direta abaixo dela
A travessia não segue links indiretos, portanto fontes, imagens, dicionários de recursos, nós de árvore de página e outros objetos entre páginas compartilhados permanecem de propriedade do documento carregado
Entradas de lista de exibição e raster específicas da página são removidas no mesmo limite
Segurança e retenção
Páginas sujas, de gravação obrigatória, ativas ou de outro modo não recarregáveis são retidas e relatadas em vez de descartadas
Raízes de página diretas com suporte de arquivo recarregam de seu deslocamento de cross-reference validado, enquanto raízes compactadas recarregam pelo caminho de membro indexado de object stream
Raízes comuns carregadas por stream ou criptografadas sem uma fonte reproduzível de forma independente permanecem residentes
Processamento sequencial
for PageIndex := 0 to PDF.LoadedPageCount - 1 do
begin
ProcessLoadedPage(PDF, PageIndex);
PDF.ReleaseLoadedPageObjectGraph(PageIndex);
end;
Um fixture de regressão de 100.000 páginas atinge o pico de 69,3 MiB no Win32, não mostra crescimento em estado estacionário e rematerializa uma página liberada com seu número de objeto original e caixas de página
Concorrência
O acesso ao grafo do documento carregado permanece serializado pelo chamador
Não libere uma página enquanto outra thread estiver renderizando, inspecionando ou mutando a mesma instância de documento
Veja também: ReleaseLoadedPageObjectGraph, GetLoadedPageObjectGraphReleaseStatistics, THPDFPageObjectGraphReleaseStatistics, Carregamento preguiçoso de árvore de página, Cache limitado de object stream