Metodo ICorProfilerInfo2::GetGenerationBounds
Ottiene le aree di memoria, segmenti dell'heap, che costituiscono le diverse generazioni di Garbage Collection.
HRESULT GetGenerationBounds(
[in] ULONG cObjectRanges,
[out] ULONG *pcObjectRanges,
[out, size_is(cObjectRanges), length_is(*pcObjectRanges)] COR_PRF_GC_GENERATION_RANGE ranges[]);
Parametri
cObjectRanges
[in] Numero di elementi allocati dal chiamante per la matrice ranges.pcObjectRanges
[out] Puntatore a un numero intero che specifica il numero complessivo di intervalli che sarà restituito, interamente oppure in parte, nella matrice ranges.ranges
[out] Matrice di strutture COR_PRF_GC_GENERATION_RANGE, ognuna delle quali descrive un intervallo, ovvero un blocco di memoria all'interno della generazione su cui è in esecuzione Garbage Collection.
Note
Il metodo GetGenerationBounds può essere chiamato da qualsiasi callback del profiler, purché non sia in corso la Garbage Collection. In altri termini, può essere chiamato da tutti i callback a eccezione di quelli che si verificano tra i metodi ICorProfilerCallback2::GarbageCollectionStarted e ICorProfilerCallback2::GarbageCollectionFinished.
La maggior parte degli spostamenti di generazioni si verifica durante i Garbage Collection. Le generazioni possono aumentare tra un Garbage Collection e l'altro ma in genere non si spostano. Pertanto, i punti più interessanti in cui chiamare la funzione GetGenerationBounds sono i metodi ICorProfilerCallback2::GarbageCollectionStarted e ICorProfilerCallback2::GarbageCollectionFinished.
Durante l'avvio del programma, alcuni oggetti vengono allocati direttamente da Common Language Runtime, di solito nelle generazioni 3 e 0. In questo modo, non appena inizierà l'esecuzione del codice gestito, tali generazioni già conterranno oggetti. Le generazioni 1 e 2 in genere restano vuote, a eccezione degli oggetti fittizi generati dal Garbage Collector. La dimensione di tali oggetti è pari a 12 byte nelle implementazioni a 32 bit di Common Language Runtime, mentre è più grande nelle implementazioni a 64 bit. È anche possibile vedere intervalli di generazione 2 all'interno di moduli prodotti dal generatore di immagini native (Ngen.exe). In questo caso, gli oggetti nella generazione 2 sono oggetti bloccati, allocati durante l'esecuzione di Ngen.exe invece che dal Garbage Collector.
Questa funzione utilizza buffer allocati dal chiamante. Per ulteriori informazioni, vedere Convenzioni dei metodi dell'API di profilatura.
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