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.
Hlásí rozložení objektů v haldě v důsledku nekomprimace uvolňování paměti.
Syntaxe
HRESULT SurvivingReferences(
[in] ULONG cSurvivingObjectIDRanges,
[in, size_is(cSurvivingObjectIDRanges)] ObjectID
objectIDRangeStart[] ,
[in, size_is(cSurvivingObjectIDRanges)] ULONG
cObjectIDRangeLength[] );
Parametry
cSurvivingObjectIDRanges
[v] Počet bloků souvislých objektů, které přežily v důsledku nekomprimace uvolňování paměti. To znamená, že hodnota cSurvivingObjectIDRanges je velikost objectIDRangeStart polí a cObjectIDRangeLength , které ukládají hodnotu ObjectID a délku pro každý blok objektů.
Další dva argumenty jsou SurvivingReferences paralelní pole. Jinými slovy, objectIDRangeStart a cObjectIDRangeLength týkají se stejného bloku souvislých objektů.
objectIDRangeStart
[v] Pole ObjectID hodnot, z nichž každá je počáteční adresou bloku souvislých živých objektů v paměti.
cObjectIDRangeLength
[v] Pole celých čísel, z nichž každé představuje velikost přechozího bloku souvislých objektů v paměti.
Pro každý blok, na který se odkazuje v matici, je zadána objectIDRangeStart velikost.
Poznámky
Důležité
Tato metoda hlásí velikosti objektů MAX_ULONG , které jsou větší než 4 GB na 64bitových platformách. Pro objekty, které jsou větší než 4 GB, použijte ICorProfilerCallback4::SurvivingReferences2 místo metody.
Prvky objectIDRangeStart polí a cObjectIDRangeLength by měly být interpretovány následujícím způsobem, aby bylo možné určit, zda objekt přežil uvolňování paměti. Předpokládejme, že ObjectID hodnota (ObjectID) leží v následujícím rozsahu:
ObjectIDRangeStart[i]
<= ObjectID<ObjectIDRangeStart[i] + cObjectIDRangeLength[i]
Pro libovolnou i hodnotu, která je v následujícím rozsahu, objekt přežil uvolňování paměti:
0 <= i<cSurvivingObjectIDRanges
Nekomprimující uvolňování paměti uvolní paměť zabíranou "mrtvými" objekty, ale nezkomprimuje uvolněné místo. V důsledku toho se do haldy vrátí paměť, ale nepřesouvají se žádné živé objekty.
Modul CLR (Common Language Runtime) volá SurvivingReferences nekomprimace uvolňování paměti. Pro komprimování uvolňování paměti je místo toho volán ICorProfilerCallback::MovedReferences . Jedno uvolňování paměti může být komprimační pro jednu generaci a nekomprimuje pro jinou. V případě uvolňování paměti v konkrétní generaci obdrží profiler buď SurvivingReferences zpětné volání, nebo MovedReferences zpětné volání, ale ne obojí.
Během konkrétního uvolňování paměti může být přijato více SurvivingReferences zpětných volání, a to kvůli omezenému internímu ukládání do vyrovnávací paměti, hlášení více vláken v případě uvolňování paměti serveru a dalším důvodům. V případě více zpětných volání během uvolňování paměti jsou informace kumulativní – všechny odkazy, které jsou hlášeny v libovolném SurvivingReferences zpětném volání, přetrvají uvolňování paměti.
Požadavky
Platformy: Viz Požadavky na systém.
Záhlaví: CorProf.idl, CorProf.h
Knihovny: CorGuids.lib
Verze rozhraní .NET Framework: K dispozici od verze 2.0