ICorProfilerCallback2::SurvivingReferences, metod
Rapporterar layouten för objekt i heapen som ett resultat av en icke-komprimerad skräpinsamling.
Syntax
HRESULT SurvivingReferences(
[in] ULONG cSurvivingObjectIDRanges,
[in, size_is(cSurvivingObjectIDRanges)] ObjectID
objectIDRangeStart[] ,
[in, size_is(cSurvivingObjectIDRanges)] ULONG
cObjectIDRangeLength[] );
Parametrar
cSurvivingObjectIDRanges
[in] Antalet block med sammanhängande objekt som överlevde till följd av den icke-komprimerande skräpinsamlingen. Värdet cSurvivingObjectIDRanges
för är alltså storleken på objectIDRangeStart
matriserna och cObjectIDRangeLength
som lagrar en ObjectID
respektive en längd för varje objektblock.
De följande två argumenten SurvivingReferences
för är parallella matriser. Med andra ord, objectIDRangeStart
och cObjectIDRangeLength
gäller samma block av sammanhängande objekt.
objectIDRangeStart
[in] En matris med ObjectID
värden, som var och en är startadressen för ett block med sammanhängande, levande objekt i minnet.
cObjectIDRangeLength
[in] En matris med heltal, var och en är storleken på ett kvarvarande block med sammanhängande objekt i minnet.
En storlek anges för varje block som refereras i matrisen objectIDRangeStart
.
Kommentarer
Viktigt
Den här metoden rapporterar storlekar som MAX_ULONG
för objekt som är större än 4 GB på 64-bitarsplattformar. För objekt som är större än 4 GB använder du ICorProfilerCallback4::SurvivingReferences2-metoden i stället.
Elementen i matriserna objectIDRangeStart
och cObjectIDRangeLength
bör tolkas på följande sätt för att avgöra om ett objekt överlevde skräpinsamlingen. Anta att ett ObjectID
värde (ObjectID
) ligger inom följande intervall:
ObjectIDRangeStart[i]
<= ObjectID
<ObjectIDRangeStart[i]
+ cObjectIDRangeLength[i]
För alla värden i
för som finns i följande intervall har objektet överlevt skräpinsamlingen:
0 <= i
<cSurvivingObjectIDRanges
En icke-komprimerande skräpinsamling återvinns minnet som upptas av "döda" objekt, men komprimerar inte det frigjorda utrymmet. Därför returneras minnet till heapen, men inga "levande" objekt flyttas.
CLR (Common Language Runtime) anropar SurvivingReferences
skräpsamlingar som inte komprimeras. För att komprimera skräpsamlingar anropas ICorProfilerCallback::MovedReferences i stället. En enda skräpinsamling kan komprimeras för en generation och icke-komprimera för en annan. För en skräpinsamling i en viss generation får profileraren antingen ett SurvivingReferences
återanrop eller ett MovedReferences
återanrop, men inte båda.
Flera SurvivingReferences
återanrop kan tas emot under en viss skräpinsamling på grund av begränsad intern buffring, flera trådar som rapporterar om skräpinsamling på servern och andra orsaker. Vid flera återanrop under en skräpinsamling är informationen kumulativ – alla referenser som rapporteras i återanrop SurvivingReferences
överlever skräpinsamlingen.
Krav
Plattformar: Se Systemkrav.
Huvudet: CorProf.idl, CorProf.h
Bibliotek: CorGuids.lib
.NET Framework versioner: Tillgänglig sedan 2.0