已释放页面对象图

大型顺序作业可以在每页之后丢弃干净的页面拥有的对象图,同时保留足够的源元数据以按需再次物化页面

释放边界

ReleaseLoadedPageObjectGraph 释放选定的间接页面根及其下方直接拥有的嵌套对象

遍历不跟随间接链接,因此共享字体、图像、资源字典、页面树节点和其他跨页对象保持由已加载文档拥有

页面特定的显示列表和栅格条目在同一边界逐出

安全与保留

脏、必须写入、活动或其他不可重新加载的页面被保留并报告,而不是丢弃

直接文件支持的页面根从其验证的交叉引用偏移重新加载,而压缩根通过索引对象流成员路径重新加载

没有独立可重放源的流加载或加密普通根保持驻留

顺序处理

for PageIndex := 0 to PDF.LoadedPageCount - 1 do
begin
  ProcessLoadedPage(PDF, PageIndex);
  PDF.ReleaseLoadedPageObjectGraph(PageIndex);
end;

100,000 页回归夹具在 Win32 上峰值为 69.3 MiB,无稳态增长,然后以其原始对象编号和页面框重新物化已释放页面

并发

已加载文档图访问保持调用方串行化

不要在其他线程渲染、检查或变更同一文档实例时释放页面

另请参阅: ReleaseLoadedPageObjectGraph、GetLoadedPageObjectGraphReleaseStatistics、THPDFPageObjectGraphReleaseStatistics、惰性页面树加载、有界对象流缓存