Paginación del cross-reference map

Cuando el cross-reference map de un documento crece más allá de las entradas de THotPDF.XRefMapPagingThreshold (250000 por defecto, unos 8 MB denso), la pasada de carga completa lo empaqueta en un THPDFXRefMapPager y libera el array denso, de modo que los documentos grandes dejan de retener cada entrada en un map de records alineado

THPDFXRefMapPager

El pager guarda un snapshot ordenado de slots empaquetados de 24 bytes (THPDFXRefMapSlot): número de objeto, tipo de entrada, generación de 16 bits, offset y ubicación en object stream. GetEntry responde por búsqueda binaria a través de una página pequeña de 64 entradas materializada con LRU, así que las búsquedas secuenciales decodifican una página para muchas entradas; CollectFreeEntries extrae el conjunto libre en orden de número de objeto para la reconstrucción de actualizaciones incrementales

Diagnósticos y consumers

GetLoadedXRefMapPaged reporta el estado paginado con el conteo de entradas, los bytes del snapshot y los conteos de hits y misses de la ventana; la reconstrucción del conjunto libre del guardado incremental y la resolución de /Length indirectos de los miembros de stream materializados de forma lazy responden a través del pager, y poner el umbral en 0 deshabilita la paginación por completo