Delen via


Methode ICorProfilerCallback5::ConditionalWeakTableElementReferences

Identificeert de transitieve sluiting van objecten waarnaar wordt verwezen door deze wortels via zowel directe lidveldverwijzingen als via ConditionalWeakTable afhankelijkheden.

Syntaxis

HRESULT ConditionalWeakTableElementReferences(
     [in]                     ULONG    cRootRefs,
     [in, size_is(cRootRefs)] ObjectID keyRefIds[],
     [in, size_is(cRootRefs)] ObjectID valueRefIds[],
     [in, size_is(cRootRefs)] GCHandleID rootIds[]
);

Parameters

cRootRefs
[in] Het aantal elementen in de keyRefIdsmatrices , valueRefIdsen rootIds .

keyRefIds
[in] Een matrix van object-id's, die elk de ObjectID voor het primaire element in het afhankelijke greeppaar bevat.

valueRefIds
[in] Een matrix van object-id's, die elk de ObjectID voor het secundaire element in het afhankelijke greeppaar bevat. (keyRefIds[i] blijft valueRefIds[i] in leven.)

rootIds
[in] Een matrix met GCHandleID waarden die verwijzen naar een geheel getal dat aanvullende informatie bevat over de hoofdmap van de garbagecollection.

Geen van de ObjectID waarden die door de ConditionalWeakTableElementReferences methode worden geretourneerd, zijn geldig tijdens het terugbellen zelf, omdat de garbagecollection mogelijk bezig is met het verplaatsen van objecten van oude naar nieuwe locaties. Daarom mogen profilers geen objecten inspecteren tijdens een ConditionalWeakTableElementReferences aanroep. Op GarbageCollectionFinishedzijn alle objecten zijn verplaatst naar hun nieuwe locaties en kan inspectie worden uitgevoerd.

Voorbeeld

In het volgende codevoorbeeld ziet u hoe u ICorProfilerCallback5 implementeert en deze methode gebruikt.

HRESULT Callback5Impl::ConditionalWeakTableElementReferences(
    ULONG      cRootRefs,
    ObjectID   keyRefIds[],
    ObjectID   valueRefIds[],
    GCHandleID rootIds[])
{
    printf("Callback5Impl::ConditionalWeakTableElementReferences called\n");
    for (unsigned int i = 0; i < cRootRefs; ++i)
    {
        // Save dependency to XML for later retrieval
        PersistDependencyToXml(rootIds[i], keyRefIds[i], valueRefIds[i]);
        // or store dependency to an internal map
        m_cwt_deps->add_dep(rootIds[i], keyRefIds[i], valueRefIds[i]);
        // or add arc to object graph
        m_obj_graph->add_arc(keyRefIds[i], valueRefIds[i], rootIds[i]);
    }
    return S_OK;
}

Opmerkingen

Een profiler voor de .NET Framework 4.5 of latere versies implementeert de interface ICorProfilerCallback5 en registreert de afhankelijkheden die zijn opgegeven door de ConditionalWeakTableElementReferences methode. ICorProfilerCallback5 biedt de volledige set afhankelijkheden tussen live-objecten die worden vertegenwoordigd door ConditionalWeakTable vermeldingen. Met deze afhankelijkheden en de lidveldverwijzingen die zijn opgegeven met de methode ICorProfilerCallback::ObjectReferences kan een beheerde profiler de volledige objectgrafiek van live-objecten genereren.

Vereisten

Platforms: Zie Systeemvereisten.

Header: CorProf.idl, CorProf.h

.NET Framework versies: beschikbaar sinds 4.5

Zie ook