THotPDF.BuildLoadedObjectDependencyGraph Method
Строит детерминированный граф зависимостей для текущего загруженного документа и атрибутирует оценку удерживаемой памяти через доминаторное дерево с корнем в Catalog
Объявление
function BuildLoadedObjectDependencyGraph(
out Nodes: THPDFObjectDependencyNodeArray;
out Edges: THPDFObjectDependencyEdgeArray;
out AInfo: THPDFObjectDependencyGraphInfo;
MaxObjects: Integer = 250000;
MaxEdges: Integer = 2000000
): boolean;
Узлы
EstimatedShallowBytesвключает экземпляр объекта, непосредственно принадлежащие значения, ключи и списки словарей, а также резидентные in-memory данные stream, но не учитывает упоминаемые косвенные объектыEstimatedRetainedBytesдобавляет shallow-байты каждого объекта, достижимого из Catalog и доминируемого этим узлом, считая общие зависимости только один разImmediateDominatorObjectNumberи его поколение определяют ближайшего обязательного владельца либо-1для Catalog и недостижимых объектов- Входящие и исходящие счётчики сохраняют кратность слотов ссылок, а
ReachableFromCatalogотличает живую структуру документа от отсоединённых объектов
Рёбра и ограничения
Каждое ребро записывает идентичности исходного и целевого объектов, путь в словаре или массиве до слота ссылки и то, разрешилась ли цель точно по номеру объекта и поколению
Метод отклоняет число объектов или рёбер сверх заданных вызывающим кодом лимитов, вложенность прямых объектов глубже 256 уровней, некорректные циклы прямого вложения и анализ доминаторов, превышающий 128 проходов сходимости
Значения памяти — переносимые оценки для атрибуции и сравнения, а не точные до аллокатора измерения процесса