ICorProfilerCallback2::SurvivingReferences — Metoda
Raportuje układ obiektów w stercie w wyniku niezwartego odzyskiwania pamięci.
Składnia
HRESULT SurvivingReferences(
[in] ULONG cSurvivingObjectIDRanges,
[in, size_is(cSurvivingObjectIDRanges)] ObjectID
objectIDRangeStart[] ,
[in, size_is(cSurvivingObjectIDRanges)] ULONG
cObjectIDRangeLength[] );
Parametry
cSurvivingObjectIDRanges
[in] Liczba bloków ciągłych obiektów, które przetrwały w wyniku niekompaktowanego odzyskiwania pamięci. Oznacza to, że wartość cSurvivingObjectIDRanges
jest rozmiarem objectIDRangeStart
tablic i, które przechowują ObjectID
odpowiednio długość i cObjectIDRangeLength
dla każdego bloku obiektów.
Następne dwa argumenty funkcji to tablice SurvivingReferences
równoległe. Innymi słowy, objectIDRangeStart
i cObjectIDRangeLength
dotyczy tego samego bloku ciągłych obiektów.
objectIDRangeStart
[in] Tablica ObjectID
wartości, z których każda jest adresem początkowym bloku ciągłych obiektów na żywo w pamięci.
cObjectIDRangeLength
[in] Tablica liczb całkowitych, z których każda jest rozmiarem ocalałego bloku ciągłych obiektów w pamięci.
Rozmiar jest określany dla każdego bloku, do którego odwołuje się tablica objectIDRangeStart
.
Uwagi
Ważne
Ta metoda zgłasza rozmiary MAX_ULONG
obiektów, które są większe niż 4 GB na platformach 64-bitowych. W przypadku obiektów, które są większe niż 4 GB, zamiast tego użyj metody ICorProfilerCallback4::SurvivingReferences2 .
Elementy objectIDRangeStart
tablic i cObjectIDRangeLength
powinny być interpretowane w następujący sposób, aby określić, czy obiekt przetrwał odzyskiwanie pamięci. Załóżmy, że ObjectID
wartość (ObjectID
) leży w następującym zakresie:
ObjectIDRangeStart[i]
<= ObjectID
<ObjectIDRangeStart[i]
+ cObjectIDRangeLength[i]
Dla dowolnej wartości i
, która znajduje się w następującym zakresie, obiekt przetrwał odzyskiwanie pamięci:
0 <= i
<cSurvivingObjectIDRanges
Niezwarte odzyskiwanie pamięci odzyskuje pamięć zajmowaną przez obiekty "martwe", ale nie kompakuje wolnego miejsca. W związku z tym pamięć jest zwracana do sterty, ale nie są przenoszone żadne obiekty "aktywne".
Środowisko uruchomieniowe języka wspólnego (CLR) wywołuje SurvivingReferences
niezwarte odzyskiwanie pamięci. W przypadku kompaktowania odzyskiwania pamięci zamiast tego wywoływana jest funkcja ICorProfilerCallback::MovedReferences . Pojedyncze odzyskiwanie pamięci może być kompaktowane dla jednej generacji i niezwarte dla innego. W przypadku odzyskiwania pamięci w przypadku każdej konkretnej generacji profiler otrzyma SurvivingReferences
wywołanie zwrotne lub MovedReferences
wywołanie zwrotne, ale nie oba te elementy.
Podczas odzyskiwania pamięci może zostać odebranych wiele SurvivingReferences
wywołań zwrotnych z powodu ograniczonego buforowania wewnętrznego, wielu wątków raportowania w przypadku odzyskiwania pamięci serwera i innych powodów. W przypadku wielu wywołań zwrotnych podczas odzyskiwania pamięci informacje są zbiorcze — wszystkie odwołania zgłoszone w każdym wywołaniu zwrotnym SurvivingReferences
przetrwają odzyskiwanie pamięci.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówka: CorProf.idl, CorProf.h
Biblioteki: CorGuids.lib
wersje .NET Framework: dostępne od wersji 2.0