Dela via


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

Se även