PDFium Delphi Component 文件

FPdfCache 单元

单元: FPdfCache
为保留型 PDF 数据提供共享字节预算调节器,其持有者可以按需释放条目

类型

TypeDescription
EPdfCacheError报告无效的预算、条目大小和参与方
TPdfCacheKind对页面场景(pckPageScene)、瓦片(pckTile)、缩略图(pckThumbnail)、系统字体(pckSystemFont)、结构数据(pckStructure)、文本快照(pckTextSnapshot)、页面对象快照(pckPageObjectSnapshot)、已解码流(pckDecodedStream)和应用程序条目(pckApplication)进行分类
TPdfCacheGovernorStatistics报告预算、当前与峰值保留字节、固定字节、条目数、预留数、访问数、逐出数和拒绝数;字段包括 MaxBytes、StoredBytes、PeakStoredBytes、PinnedBytes、EntryCount、ReservationCount、TouchCount、EvictionCount、RejectionCount
TPdfCacheParticipant在调节器将令牌从其记账中移除之后,接收同步的 EvictCacheEntry 回调
TPdfCacheGovernorEntry为编译器兼容性而暴露的内部记账记录;字段包括 Token、Participant、Kind、StoredBytes、LastUsed 和 Pinned
TPdfCacheGovernor线程安全的令牌注册表,在所有参与方和缓存种类之间维护单一的全局最近最少使用顺序

TPdfCacheGovernor 成员

MemberDescription
Create(AMaxBytes: Int64)创建带非负字节预算的调节器
Destroy在释放同步状态之前清除已注册的条目
Reserve预留字节并返回正数令牌,尽可能逐出全局 LRU 条目,条目无法容纳时返回零
Touch将现有令牌移动到最新位置
Release移除令牌的记账而不调用其逐出回调
SetPinned保护或取消保护使用中的条目,并在取消固定后进行修剪
Clear移除所有令牌并要求每个参与方释放其保留的条目
Contains测试令牌是否仍处于注册状态
UsageForKind返回某个 TPdfCacheKind 的保留字节数
EntryCountForKind返回某个 TPdfCacheKind 的注册条目数
Statistics返回受锁保护的遥测快照
MaxBytes读取或更改总预算,并在缩减后立即修剪未固定的条目

所有权与回调约定

调节器绝不拥有参与方或其保留的数据

每个参与方的存活时间必须长于其注册的所有令牌,且不得从 EvictCacheEntry 抛出异常

回调在未持有调节器锁的情况下同步运行,因此参与方可以安全地为相关令牌调用 Release

在最后一个使用者取消固定之前,被固定的条目可能使 StoredBytes 暂时高于已下调的 MaxBytes 值

PDFium 边界

FPDF_RENDER_LIMITEDIMAGECACHE 仍可通过 reLimitCache 使用,它应用 PDFium 固定的原生单页图像缓存上限

PDFium 没有为可配置或可查询的进程级缓存字节预算公开任何公共 ABI

因此调节器度量 PDFium Delphi Component 自有的保留对象,并对不透明的已解析页面场景使用显式估算

参见

TPdf 缓存调节器, TPdfTileCache, ConfigureSystemFontCacheGovernor