Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Identifikuje tranzitivní uzavření objektů odkazovaných těmito kořeny prostřednictvím přímých odkazů na pole členů a prostřednictvím ConditionalWeakTable závislostí.
Syntaxe
HRESULT ConditionalWeakTableElementReferences(
[in] ULONG cRootRefs,
[in, size_is(cRootRefs)] ObjectID keyRefIds[],
[in, size_is(cRootRefs)] ObjectID valueRefIds[],
[in, size_is(cRootRefs)] GCHandleID rootIds[]
);
Parametry
cRootRefs
[v] Počet prvků v polích keyRefIds, valueRefIdsa rootIds
keyRefIds
[v] Pole ID objektů, z nichž každé obsahuje ObjectID pro primární prvek v závislém úchytu.
valueRefIds
[v] Pole ID objektů, z nichž každé obsahuje ObjectID pro sekundární prvek v závislém úchytu. (keyRefIds[i] udržuje při valueRefIds[i] životě.)
rootIds
[v] Pole GCHandleID hodnot, které odkazují na celé číslo, které obsahuje další informace o kořenovém adresáři uvolňování paměti.
Žádná z ObjectID hodnot vrácených metodou ConditionalWeakTableElementReferences není platná během samotného zpětného volání, protože uvolňování paměti může být v procesu přesunu objektů ze starých do nových umístění. Proto by se profilátory neměly pokoušet kontrolovat objekty během ConditionalWeakTableElementReferences volání. V GarbageCollectionFinishedsystému byly všechny objekty přesunuty do nových umístění a je možné provést kontrolu.
Příklad
Následující příklad kódu ukazuje, jak implementovat ICorProfilerCallback5 a použít tuto metodu.
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;
}
Poznámky
Profiler pro rozhraní .NET Framework 4.5 nebo novější verze implementuje rozhraní ICorProfilerCallback5 a zaznamenává závislosti určené metodou ConditionalWeakTableElementReferences .
ICorProfilerCallback5 poskytuje úplnou sadu závislostí mezi živými objekty reprezentovanými položkami ConditionalWeakTable . Tyto závislosti a odkazy na pole členů zadané metodou ICorProfilerCallback::ObjectReferences umožňují spravovanému profileru generovat úplný graf objektů živých objektů.
Požadavky
Platformy: Viz Požadavky na systém.
Záhlaví: CorProf.idl, CorProf.h
Verze rozhraní .NET Framework: K dispozici od verze 4.5