PDFium Delphi Component 文件

FPdfCache 單元

單元: FPdfCache
為保留的 PDF 資料提供共用的位元組額度治理器,其擁有者可依需求釋放項目

Types

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 擁有的保留物件,並對不透明的已剖析頁面場景使用明確的估算值

See Also

TPdf 快取調節器, TPdfTileCache, ConfigureSystemFontCacheGovernor