峰值内存调度

HotPDF 在竞争的高占用操作分配其主要工作集之前,通过一个进程范围的字节预算准入它们

覆盖的操作

每个操作预留从其源大小、渲染尺寸、DPI、流阈值和工作进程数派生的保守估计,然后在现有操作遥测边界释放预留

准入策略

无争用路径不分配等待事件,而争用操作使用一个私有事件并且不旋转

配置

PDF.PeakMemorySchedulerEnabled := True;
PDF.PeakMemorySchedulerBudgetBytes := 768 * 1024 * 1024;

PDF.ResetPeakMemorySchedulerStatistics;
if PDF.GetPeakMemorySchedulerStatistics(Stats) then
begin
  WriteLn(Stats.PeakReservedBytes);
  WriteLn(Stats.DelayedAdmissionCount);
  WriteLn(Stats.TotalWaitMilliseconds);
end;

PeakMemorySchedulerEnabled 是每个组件级的,可以为受信任的隔离工作绕过准入,而 PeakMemorySchedulerBudgetBytes 配置共享的进程范围调度器

统计

THPDFPeakMemorySchedulerStatistics 报告当前和峰值预留字节、当前和峰值活动预留、当前和峰值等待者、总准入和延迟准入、超大准入、取消以及聚合等待时间

THPDFOperationTelemetry.ScheduledMemoryBytes、MemorySchedulerWaitMilliseconds 和 MemorySchedulerDelayed 将调度成本归因于最近的操作

相关 API