THotPDF-vindusbasert lokal filmapping
Styrer den avgrensede skrivebeskyttede minnekartleggingen som brukes av LoadFromFile for store lokale dokumenter
Deklarasjoner
property LocalFileMappingThreshold: Int64;
property LocalFileMappingWindowSize: Integer;
property LocalFileMappingCacheWindows: Integer;
property LocalFileMappingAdaptiveGeometry: boolean;
property LastLoadUsedMemoryMapping: boolean;
function GetLastMappedFileStatistics(
out Statistics: THPDFMappedFileStatistics): boolean;
Standardverdier
| Innstilling | Standard | Betydning |
|---|---|---|
LocalFileMappingThreshold | 8 MiB | Minimum kilde størrelse som velger minnekartlegging; null deaktiverer kartlegging |
LocalFileMappingWindowSize | 16 MiB | Byte dekket av én allokeringsgranularitet-justert visning |
LocalFileMappingCacheWindows | 4 | Maksimalt antall residente visninger beholdt av LRU-cachen |
LocalFileMappingAdaptiveGeometry | True | Omfordeler den samme kartlagte-byte-grensen for vedvarende sekvensiell eller tilfeldig tilgang |
Statistikk
THPDFMappedFileStatistics = record
FileSize: Int64;
ConfiguredWindowSize: Int64;
ConfiguredCacheWindowCount: Integer;
WindowSize: Int64;
CacheWindowCount: Integer;
MappedByteLimit: Int64;
CurrentMappedBytes: Int64;
PeakMappedBytes: Int64;
GeometryChangeCount: Int64;
SequentialReadCalls: Int64;
RandomReadCalls: Int64;
AdaptiveGeometry: Boolean;
SequentialGeometryActive: Boolean;
RandomGeometryActive: Boolean;
ReadCalls: Int64;
BytesRead: Int64;
MapCount: Int64;
CacheHits: Int64;
FallbackReadCalls: Int64;
FallbackBytes: Int64;
DirectTransferCalls: Int64;
DirectTransferBytes: Int64;
end;
GetLastMappedFileStatistics returnerer True bare når den siste LoadFromFile-operasjonen valgte kartlegging
MapCount teller nye visninger, og CacheHits teller lesinger betjent av en eksisterende visning, slik at applikasjoner og benchmarks kan justere vindusgeometrien mot reelle tilgangsmønstre
MappedByteLimit forblir fast mens WindowSize og CacheWindowCount rapporterer den aktive geometrien; topp kartlagte byte, mønsterantall og modusflagg gjør hver tilpasning observerbar
Avanserte kildetyper
THPDFMappedFileSource eier det delte filhåndtaket, kartleggingsobjektet, synkroniserte LRU-vinduer, referansetellingen og den posisjonelle fallback-stien
THPDFMappedFileStream eksponerer en avgrenset søkbar skive over den kilden, mens THPDFMappedFileWindow beskriver én cachet intern visning
Atferd
- Visninger kartlegges bare når en lesing når deres område, og de fjernes i minst-nylig-brukt-rekkefølge
- Åtte vedvarende foroverobservasjoner velger større sekvensielle vinduer, mens åtte fjerne eller bakoverobservasjoner velger opptil 16 mindre vinduer for tilfeldig tilgang
- Adaptiv geometri overskrider aldri bytegrensen utledet fra den konfigurerte størrelsen og cache-antallet
- Lesinger som krysser en vindusgrense kopieres i avgrensede segmenter uten å opprette en hel-fil-buffer
HPDFTransferStreamskriver kartlagte skiver direkte fra hvert residente vindu og registrerer direkte overføringskall og byte separat fra parser-lesinger- Parser-strømmer og uendrede late PDF-strømlegemer deler ett filhåndtak, ett kartleggingsobjekt og én trådsikker vinduscache
- Kilden tillater atomisk omdøping eller sletting mens den er aktiv, mens dens eksisterende kartlegging beholder et stabilt bilde av de åpnede bytene
- Feil ved oppretting av kartleggingen velger den opprinnelige
TFileStream-implementeringen, mens en senere visningsallokeringsfeil bytter den delte kilden til låste posisjonelle fillesinger - Vindustørrelser under 64 KiB og cache-antal utenfor 1 til 32 utløser
ERangeError
Se også: LocalFileMappingAdaptiveGeometry, LoadFromFile, Skalerbar innlasting, HPDFTransferStream, LoadedStreamMemoryThreshold