property CacheGovernorStatistics: TPdfCacheGovernorStatistics; // read only
type TPdfCacheGovernorStatistics = record
MaxBytes: Int64;
StoredBytes: Int64;
PeakStoredBytes: Int64;
PinnedBytes: Int64;
EntryCount: Integer;
ReservationCount: Int64;
TouchCount: Int64;
EvictionCount: Int64;
RejectionCount: Int64;
end;
| MaxBytes | เพดานที่ตั้งไว้ มีค่าเท่ากับ CacheBudgetBytes |
| StoredBytes | ผลรวมไบต์ที่วัดได้ของ entry ที่ยังเก็บอยู่ทั้งหมดในตอนนี้ |
| PeakStoredBytes | ค่าสูงสุดที่ StoredBytes เคยไปถึงตั้งแต่สร้าง instance |
| PinnedBytes | ส่วนของไบต์ที่เก็บอยู่ซึ่งถูก pin โดย entry ที่ pin อยู่ ขณะนี้คือ parsed page scene ที่ active |
| EntryCount | จำนวน entry ที่เก็บอยู่รวมทุก cache ที่ร่วมอยู่ |
| ReservationCount | จำนวนสะสมของการเพิ่มข้อมูลเข้า cache ที่ยอมรับ |
| TouchCount | จำนวนสะสมของการรีเฟรชตามแบบ least-recently-use หนึ่งครั้งต่อ cache hit บน entry ที่เก็บอยู่ |
| EvictionCount | จำนวนสะสมของ entry ที่ถูกทิ้งเพื่อให้การใช้งานอยู่ในงบ |
| RejectionCount | จำนวนสะสมของการเพิ่มข้อมูลที่ถูกปฏิเสธ เพราะงบเป็นศูนย์, ตัว entry เดี่ยวใหญ่เกิน MaxBytes หรือไม่มีอะไรให้ไล่ออกได้ |
record นี้ประกาศไว้ในหน่วย FPdfCache และสะท้อนสถานะของ governor ส่วนตัวที่อธิบายไว้ในหน้า CacheGovernor ค่าทั้งหมดถูกเก็บภายใต้ lock ของ governor การอ่านหนึ่งครั้งจึงได้มุมมองที่สอดคล้องกันแม้จะมี thread อื่นกำลัง render หรืออ่านหน้าอยู่ก็ตาม
snapshot ครอบคลุมเฉพาะ cache entry ของไลบรารีที่เก็บไว้ สำเนา bitmap และสำเนา snapshot ที่ผู้เรียกเป็นเจ้าของไม่ถูกนับในงบ การอ่าน stream ที่ถอดรหัสแล้วก็ยังเป็นแบบชั่วคราวและคงขีดจำกัดต่อการเรียกแบบเข้มงวดเดิม
ตัวนับทั้งหมดสะสมตลอดอายุของ instance TPdf การเปลี่ยนความจุ การล้าง cache และการโหลดเอกสารใหม่จะไม่ทำให้ค่าเหล่านี้หาย
นับเป็น eviction เฉพาะเมื่อแรงกดดันจากงบทำให้ entry ถูกทิ้งเท่านั้น การปล่อย entry เพราะหน้าของมันถูกแก้ไขหรือมีการล้าง cache อย่างชัดเจน ไม่ถือเป็น eviction
เมื่อ governor ใช้ไม่ได้ getter จะคืน record ที่เป็นศูนย์ทุกฟิลด์ตามค่าเริ่มต้น
Stats := Pdf.CacheGovernorStatistics;
if Stats.PeakStoredBytes > Pdf.CacheBudgetBytes div 2 then
LogCachePressure(Stats.StoredBytes, Stats.EvictionCount);