已释放页面对象图
大型顺序作业可以在每页之后丢弃干净的页面拥有的对象图,同时保留足够的源元数据以按需再次物化页面
释放边界
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、惰性页面树加载、有界对象流缓存