Metodo ICorProfilerCallback4::SurvivingReferences2ICorProfilerCallback4::SurvivingReferences2 Method

Indica il layout degli oggetti nell'heap in seguito a un'operazione di Garbage Collection senza compattazione.Reports the layout of objects in the heap as a result of a non-compacting garbage collection. Questo metodo viene chiamato se il profiler ha implementato il ICorProfilerCallback4 interfaccia.This method is called if the profiler has implemented the ICorProfilerCallback4 interface. Questo callback sostituisce il ICorProfilerCallback2:: SurvivingReferences metodo, perché può indicare intervalli più ampi di oggetti le cui lunghezze superano quelle che possono essere espresse in ULONG.This callback replaces the ICorProfilerCallback2::SurvivingReferences method, because it can report larger ranges of objects whose lengths exceed what can be expressed in a ULONG.

SintassiSyntax

HRESULT SurvivingReferences2(  
    [in] ULONG  cSurvivingObjectIDRanges,  
    [in, size_is(cSurvivingObjectIDRanges)] ObjectID  
                objectIDRangeStart[] ,  
    [in, size_is(cSurvivingObjectIDRanges)] SIZE_T  
                cObjectIDRangeLength[] );  

ParametriParameters

cSurvivingObjectIDRanges
[in] Numero di blocchi di oggetti contigui rimasti in seguito alla mancata compattazione dell'operazione di Garbage Collection,[in] The number of blocks of contiguous objects that survived as the result of the non-compacting garbage collection. ovvero il valore di cSurvivingObjectIDRanges è la dimensione delle matrici objectIDRangeStart e cObjectIDRangeLength, in cui vengono rispettivamente archiviati un ObjectID e una lunghezza per ogni blocco di oggetti.That is, the value of cSurvivingObjectIDRanges is the size of the objectIDRangeStart and cObjectIDRangeLength arrays, which store an ObjectID and a length, respectively, for each block of objects.

I successivi due argomenti di SurvivingReferences2 sono matrici parallele.The next two arguments of SurvivingReferences2 are parallel arrays. In altre parole, objectIDRangeStart e cObjectIDRangeLength riguardano lo stesso blocco di oggetti contigui.In other words, objectIDRangeStart and cObjectIDRangeLength concern the same block of contiguous objects.

objectIDRangeStart
[in] Matrice di valori ObjectID, ognuno dei quali è l'indirizzo iniziale di un blocco di oggetti attivi contigui in memoria.[in] An array of ObjectID values, each of which is the starting address of a block of contiguous, live objects in memory.

cObjectIDRangeLength
[in] Matrice di Integer, ognuno dei quali è la dimensione di un blocco escluso di oggetti contigui in memoria.[in] An array of integers, each of which is the size of a surviving block of contiguous objects in memory.

Viene specificata una dimensione per ogni blocco a cui si fa riferimento nella matrice objectIDRangeStart.A size is specified for each block that is referenced in the objectIDRangeStart array.

NoteRemarks

Gli elementi delle matrici objectIDRangeStart e cObjectIDRangeLength devono essere interpretati come indicato di seguito per determinare se un oggetto è stato escluso dall'operazione di Garbage Collection.The elements of the objectIDRangeStart and cObjectIDRangeLength arrays should be interpreted as follows to determine whether an object survived the garbage collection. Si supponga che un valore ObjectID (ObjectID) si trovi nell'intervallo seguente:Assume that an ObjectID value (ObjectID) lies within the following range:

ObjectIDRangeStart[i] <= ObjectID < ObjectIDRangeStart[i] + cObjectIDRangeLength[i]

Per qualsiasi valore di i compreso nell'intervallo seguente, l'oggetto è stato escluso dall'operazione di Garbage Collection:For any value of i that is in the following range, the object has survived the garbage collection:

0 <= i < cSurvivingObjectIDRanges0 <= i < cSurvivingObjectIDRanges

Una mancata compattazione dell'operazione di Garbage Collection recupera la memoria occupata dagli oggetti inutilizzati, ma non compatta lo spazio liberato.A non-compacting garbage collection reclaims the memory occupied by "dead" objects, but does not compact that freed space. Di conseguenza, la memoria viene restituita all'heap, ma gli oggetti attivi non vengono spostati.As a result, memory is returned to the heap, but no "live" objects are moved.

Common Language Runtime (CLR) chiama SurvivingReferences2 per eseguire operazioni di Garbage Collection senza compattazione.The common language runtime (CLR) calls SurvivingReferences2 for non-compacting garbage collections. Per la garbage collection con compattazione, MovedReferences2 viene invece chiamato.For compacting garbage collections, MovedReferences2 is called instead. Una stessa operazione di Garbage Collection può eseguire la compattazione per una generazione e non eseguirla per un'altra.A single garbage collection can be compacting for one generation and non-compacting for another. Per una garbage collection in una determinata generazione, il profiler riceverà un SurvivingReferences2 callback o una MovedReferences2 callback, ma non entrambi.For a garbage collection on any particular generation, the profiler will receive either a SurvivingReferences2 callback or a MovedReferences2 callback, but not both.

Durante una particolare operazione di Garbage Collection possono essere ricevuti più callback SurvivingReferences2, a causa del buffer interno limitato, di callback multipli durante l'operazione di Garbage Collection per server e di altri motivi.Multiple SurvivingReferences2 callbacks might be received during a particular garbage collection, because of limited internal buffering, multiple callbacks during server garbage collection, and other reasons. Nel caso di più callback durante un'operazione di Garbage Collection, le informazioni sono cumulative. Tutti i riferimenti segnalati in qualsiasi callback SurvivingReferences2 vengono esclusi dall'operazione di Garbage Collection.In the case of multiple callbacks during a garbage collection, the information is cumulative; all references that are reported in any SurvivingReferences2 callback survive the garbage collection.

Se il profiler implementa sia il ICorProfilerCallback e ICorProfilerCallback4 interfacce, la SurvivingReferences2 metodo viene chiamato prima di ICorProfilerCallback2:: SurvivingReferences (metodo), ma solo se SurvivingReferences2 ha esito positivo.If the profiler implements both the ICorProfilerCallback and the ICorProfilerCallback4 interfaces, the SurvivingReferences2 method is called before the ICorProfilerCallback2::SurvivingReferences method, but only if SurvivingReferences2 returns successfully. I profiler possono restituire un valore HRESULT indicante un errore nel metodo SurvivingReferences2 per evitare di chiamare il secondo metodo.Profilers can return an HRESULT that indicates failure from the SurvivingReferences2 method to avoid calling the second method.

RequisitiRequirements

Piattaforme: vedere requisiti di sistema.Platforms: See System Requirements.

Intestazione: CorProf.idl, CorProf.hHeader: CorProf.idl, CorProf.h

Libreria: CorGuids. libLibrary: CorGuids.lib

Versioni di .NET framework: Disponibile dalla 4.5Available since 4.5.NET Framework Versions: Disponibile dalla 4.5Available since 4.5

Vedere ancheSee Also

Interfaccia ICorProfilerCallbackICorProfilerCallback Interface
Interfaccia ICorProfilerCallback2ICorProfilerCallback2 Interface
Interfaccia ICorProfilerCallback4ICorProfilerCallback4 Interface