THotPDF.BuildLoadedObjectDependencyGraph Method
현재 로드된 문서에 대한 결정적 의존성 그래프를 만들고, Catalog를 루트로 하는 dominator 트리를 통해 추정 retained memory를 귀속시킵니다
선언
function BuildLoadedObjectDependencyGraph(
out Nodes: THPDFObjectDependencyNodeArray;
out Edges: THPDFObjectDependencyEdgeArray;
out AInfo: THPDFObjectDependencyGraphInfo;
MaxObjects: Integer = 250000;
MaxEdges: Integer = 2000000
): boolean;
노드
EstimatedShallowBytes는 객체 인스턴스, 직접 소유한 값, 딕셔너리 키와 리스트, 상주하는 인메모리 stream payload를 포함하지만, 참조된 간접 객체는 제외합니다EstimatedRetainedBytes는 이 노드가 dominate하는 Catalog 도달 가능 객체 전부의 shallow 바이트를 더하되, 공유되는 의존성은 한 번만 셉니다ImmediateDominatorObjectNumber와 그 generation은 가장 가까운 필수 소유자를 나타내며, Catalog와 도달할 수 없는 오브젝트에서는-1입니다- incoming/outgoing 개수는 reference slot의 중복 개수를 그대로 유지하고,
ReachableFromCatalog는 살아 있는 문서 구조와 떨어진 객체를 구별합니다
엣지와 한도
각 엣지는 소스와 대상 객체 정체성, reference slot의 딕셔너리 또는 배열 경로, 그리고 대상이 객체 번호와 generation으로 정확히 resolve됐는지 여부를 기록합니다
이 메서드는 호출자가 지정한 한도를 넘는 객체 또는 엣지 수, 256단계보다 깊은 direct-object 포함, 형식이 잘못된 direct 포함 순환, 128회 convergence pass를 넘는 dominator 분석을 거부합니다
메모리 값은 allocator 수준의 정확한 프로세스 측정이 아니라 귀속과 비교를 위한 이식 가능한 추정치입니다