| Type | Description |
|---|---|
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 | Потокобезопасный реестр токенов с единым глобальным порядком LRU по всем участникам и видам кэша |
| Member | Description |
|---|---|
Create(AMaxBytes: Int64) | Создаёт контроллер с неотрицательным байтовым бюджетом |
Destroy | Очищает зарегистрированные записи перед освобождением состояния синхронизации |
Reserve | Резервирует байты и возвращает положительный токен, вытесняя глобальные записи LRU, когда это возможно, или возвращает ноль, если запись не помещается |
Touch | Перемещает существующий токен в самую свежую позицию |
Release | Убирает учёт токена, не вызывая его обратный вызов вытеснения |
SetPinned | Защищает или снимает защиту используемой записи и ужимает кэш после открепления |
Clear | Удаляет все токены и просит каждого участника освободить его удержанную запись |
Contains | Проверяет, остаётся ли токен зарегистрированным |
UsageForKind | Возвращает удержанные байты для одного TPdfCacheKind |
EntryCountForKind | Возвращает количество зарегистрированных записей для одного TPdfCacheKind |
Statistics | Возвращает защищённый блокировкой снимок телеметрии |
MaxBytes | Читает или изменяет общий бюджет и сразу ужимает незакреплённые записи после уменьшения |
Контроллер никогда не владеет участниками и их удержанными данными
Каждый участник должен переживать все свои зарегистрированные токены и не должен возбуждать исключения из EvictCacheEntry
Обратные вызовы выполняются синхронно без удержания блокировки контроллера, поэтому участники могут безопасно вызывать Release для связанных токенов
Закреплённые записи могут временно держать StoredBytes выше уменьшенного значения MaxBytes, пока последний пользователь их не открепит
FPDF_RENDER_LIMITEDIMAGECACHE остаётся доступным через reLimitCache и применяет фиксированный нативный лимит кэша изображений PDFium на страницу
PDFium не предоставляет публичного ABI для настраиваемого или запрашиваемого общего для процесса байтового бюджета кэша
Поэтому контроллер измеряет удержанные объекты, принадлежащие PDFium Delphi Component, и использует явную оценку для непрозрачных разобранных сцен страниц