惰性页面树加载

HotPDF 可以将普通已加载 PDF 页面树保留为紧凑的占位符表,并且只在某个 API 首次需要时解析单个页面

激活

LazyPageTreeThreshold 默认为 4096 页,适用于根暴露可用 /Count 和 /Kids 结构的有效页面树

在加载前将阈值设为 0 可禁用惰性页面树处理

低于阈值的文件和畸形树继续走现有的急切恢复路径

随机访问

对页面的首次访问沿子树 /Count 值跳过无关分支,并通过文档本地的开放寻址索引解析间接对象

解析后的页面存储在其占位符槽中,因此重复访问是直接缓存命中

普通已加载页面 API 透明地物化请求的页面,而 MaterializeLoadedPage 让调用方显式准备已知页面

完整展开与变更

MaterializeAllLoadedPages 以规范页面顺序展开剩余树

结构性添加、删除、复制、替换、移动、反转、交换、重建或保存已加载页面的操作会在变更或序列化页面图之前执行完整展开

这保留了现有的变更和保存语义,同时使面向读取的访问与遍历的分支深度成比例

遥测

GetLoadedPageTreeStatistics 报告占位符存储、已物化页面、遍历深度和工作量、对象索引容量、缓存活动以及完整展开,而不强制物化

回归门槛覆盖 100,000 页,在受支持的 Windows 目标上具有 256 MiB 工作集增长上限和 500 ms 首次随机访问上限

另请参阅: LazyPageTreeThreshold、MaterializeLoadedPage、MaterializeAllLoadedPages、GetLoadedPageTreeStatistics