THotPDF-venstergemapte toewijzing van lokale bestanden
Bepaalt de begrensde alleen-lezen geheugentoewijzing die door LoadFromFile voor grote lokale documenten wordt gebruikt
Declaraties
property LocalFileMappingThreshold: Int64;
property LocalFileMappingWindowSize: Integer;
property LocalFileMappingCacheWindows: Integer;
property LocalFileMappingAdaptiveGeometry: boolean;
property LastLoadUsedMemoryMapping: boolean;
function GetLastMappedFileStatistics(
out Statistics: THPDFMappedFileStatistics): boolean;
Standaardwaarden
| Instelling | Standaard | Betekenis |
|---|---|---|
LocalFileMappingThreshold | 8 MiB | Minimale brongrootte die geheugentoewijzing selecteert; nul schakelt toewijzing uit |
LocalFileMappingWindowSize | 16 MiB | Bytes die door één toewijzing-granulariteits-uitgelijnde view worden bedekt |
LocalFileMappingCacheWindows | 4 | Maximum residente views die door de LRU-cache worden behouden |
LocalFileMappingAdaptiveGeometry | True | Herdistribueer dezelfde gemaakte bytelimiet voor aanhoudende sequentiële of willekeurige toegang |
Statistieken
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 retourneert True alleen wanneer de laatste bewerking LoadFromFile toewijzing selecteerde
MapCount telt nieuwe views en CacheHits telt reads die door een bestaande view worden bediend, zodat toepassingen en benchmarks de venstergeometrie kunnen afstemmen op werkelijke toegangspatronen
MappedByteLimit blijft vast terwijl WindowSize en CacheWindowCount de actieve geometrie rapporteren; piek-gemaakte bytes, patroontellers en modusvlaggen maken elke aanpassing waarneembaar
Geavanceerde brontypen
THPDFMappedFileSource bezit de gedeelde bestandshandle, het toewijzingsobject, gesynchroniseerde LRU-vensters, het referentietal en het positionele fallback-pad
THPDFMappedFileStream stelt een begrensd speurbaar segment over die bron bloot, terwijl THPDFMappedFileWindow één gecachte interne view beschrijft
Gedrag
- Views worden alleen gemaat wanneer een read hun bereik bereikt en worden verwijderd in least-recently-used volgorde
- Acht aanhoudende voorwaartse waarnemingen selecteren grotere sequentiële vensters, terwijl acht verre of achterwaartse waarnemingen tot 16 kleinere random-access-vensters selecteren
- Adaptieve geometrie overschrijdt nooit de bytelimiet die is afgeleid van de geconfigureerde grootte en het cacheadgetal
- Reads die een venstergrens overschrijden, worden in begrensde segmenten gekopieerd zonder volledig-bestandsbuffer aan te maken
HPDFTransferStreamschrijft gemapte segmenten rechtstreeks vanuit elk resident venster en registreert directe overdrachtsaanroepen en bytes afzonderlijk van parserreads- Parserstreams en ongewijzigde luie PDF-streamlichamen delen één bestandshandle, toewijzingsobject en threadveilige venstercache
- De bron staat atomaire hernoeming of verwijdering toe terwijl actief, terwijl de bestaande toewijzing een stabiele view van de geopende bytes behoudt
- Een fout bij het aanmaken van de toewijzing selecteert de oorspronkelijke
TFileStream-implementatie, terwijl een latere toewijzingsfout van een view de gedeelde bron omschakelt naar vergrendelde positionele bestandsreads - Venstergrootte onder 64 KiB en cacheadgetallen buiten 1 tot en met 32 veroorzaken
ERangeError
Zie ook: LocalFileMappingAdaptiveGeometry, LoadFromFile, Schaalbaar laden, HPDFTransferStream, LoadedStreamMemoryThreshold