Programación de memoria pico

HotPDF admite operaciones competidoras de gran footprint a través de un único presupuesto de bytes a nivel de proceso antes de que asignen sus principales working sets

Operaciones cubiertas

Cada operación reserva una estimación conservadora derivada de su tamaño de origen, dimensiones de renderizado, DPI, umbral de stream y conteo de workers, y luego libera la reserva en la frontera existente de telemetría de la operación

Política de admisión

La ruta sin contención no asigna ningún wait event, mientras que las operaciones con contención usan un evento privado y no hacen spin

Configuración

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 es por componente y puede omitir la admisión para trabajo aislado confiable, mientras que PeakMemorySchedulerBudgetBytes configura el scheduler compartido a nivel de proceso

Estadísticas

THPDFPeakMemorySchedulerStatistics reporta los bytes reservados actuales y pico, las reservas activas actuales y pico, los waiters actuales y pico, las admisiones totales y retrasadas, las admisiones sobredimensionadas, las cancelaciones y el tiempo de espera agregado

THPDFOperationTelemetry.ScheduledMemoryBytes, MemorySchedulerWaitMilliseconds y MemorySchedulerDelayed atribuyen el costo de programación a la operación más reciente

APIs relacionadas