Metodo ICorProfilerCallback2::SurvivingReferences
Segnala il layout degli oggetti nell'heap a seguito di una Garbage Collection non di compattazione.
HRESULT SurvivingReferences(
[in] ULONG cSurvivingObjectIDRanges,
[in, size_is(cSurvivingObjectIDRanges)] ObjectID
objectIDRangeStart[] ,
[in, size_is(cSurvivingObjectIDRanges)] ULONG
cObjectIDRangeLength[] );
Parametri
cSurvivingObjectIDRanges
[in] Numero di blocchi di oggetti contigui non raccolti a seguito della Garbage Collection non di compattazione. In altri termini, il valore di cSurvivingObjectIDRanges è la dimensione delle matrici objectIDRangeStart e cObjectIDRangeLength, in cui sono archiviati rispettivamente un valore ObjectID e una lunghezza per ogni blocco di oggetti.I successivi due argomenti di SurvivingReferences sono matrici parallele. In altri termini, objectIDRangeStart e cObjectIDRangeLength riguardano lo stesso blocco di oggetti contigui.
objectIDRangeStart
[in] Matrice di valori ObjectID, ognuno dei quali è l'indirizzo iniziale di un blocco di oggetti attivi contigui in memoria.cObjectIDRangeLength
[in] Matrice di interi, ognuno dei quali è la dimensione di un blocco non raccolto di oggetti contigui in memoria.È specificata una dimensione per ogni blocco a cui viene fatto riferimento nella matrice objectIDRangeStart.
Note
Gli elementi delle matrici objectIDRangeStart e cObjectIDRangeLength devono essere interpretati come segue per stabilire se un oggetto non è stato raccolto dal Garbage Collector. Si supponga che il valore di un ObjectID (ObjectID) si trovi all'interno dell'intervallo seguente:
ObjectIDRangeStart[i] <= ObjectID < ObjectIDRangeStart[i] + cObjectIDRangeLength[i]
Per qualsiasi valore di i che si trova nell'intervallo seguente, l'oggetto non è stato raccolto dal Garbage Collector:
0 <= i < cSurvivingObjectIDRanges
Una Garbage Collection non di compattazione recupera la memoria occupata dagli oggetti "inutilizzati", ma non compatta lo spazio così liberato. La memoria torna pertanto all'heap, ma non viene spostato alcun oggetto "attivo".
Common Language Runtime (CLR) chiama SurvivingReferences per le Garbage Collection non di compattazione. Per le Garbage Collection di compattazione, viene invece chiamato ICorProfilerCallback::MovedReferences. Una stessa Garbage Collection può essere di compattazione per una generazione e non di compattazione per un'altra. Per una Garbage Collection su qualsiasi generazione, il profiler riceverà un callback di SurvivingReferences o un callback di MovedReferences, ma non entrambi.
Durante una determinata Garbage Collection si possono ricevere più callback di SurvivingReferences a causa di un inserimento nel buffer interno limitato, di più thread di segnalazione in caso di Garbage Collection per server e per altri motivi. Nel caso di più callback durante una Garbage Collection, le informazioni sono cumulative. Tutti i riferimenti segnalati in qualsiasi callback di SurvivingReferences non vengono pertanto raccolti dal Garbage Collector.
Requisiti
Piattaforme: vedere Requisiti di sistema di .NET Framework.
Intestazione: CorProf.idl, CorProf.h
Libreria: CorGuids.lib
Versioni di .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0
Vedere anche
Riferimenti
Interfaccia ICorProfilerCallback
Interfaccia ICorProfilerCallback2