共用方式為


ICorProfilerInfo2::GetGenerationBounds 方法

取得記憶體區域,也就是堆積的區段,會組成各種記憶體回收層代。

語法

HRESULT GetGenerationBounds(  
    [in]  ULONG cObjectRanges,  
    [out] ULONG *pcObjectRanges,  
    [out, size_is(cObjectRanges), length_is(*pcObjectRanges)] COR_PRF_GC_GENERATION_RANGE ranges[]);  

參數

cObjectRanges
[in] 對於 ranges 陣列,呼叫端所配置的項目數目 。

pcObjectRanges
[out] 指定範圍總數的整數指標,其中某些或全部都將在 ranges 陣列傳回。

ranges
[out] COR_PRF_GC_GENERATION_RANGE 結構的陣列。每個結構均說明正在進行記憶體回收之世代中的記憶體範圍 (亦即區塊)。

備註

GetGenerationBounds 方法可以從任何分析工具回呼中呼叫,前提是尚未進行記憶體回收。

多數層代移位發生在記憶體回收期間。 層代可能會在回收之間成長,但通常不會移動。 因此,呼叫 GetGenerationBounds 最有趣的地方位於 ICorProfilerCallback2::GarbageCollectionStartedICorProfilerCallback2::GarbageCollectionFinished

在程式啟動期間,某些物件會由 Common Language Runtime (CLR) 本身所配置,通常在層代 3 和 0 中。 因此,Managed 程式碼開始執行時,這些層代將已包含物件。 除了由記憶體回收行程所產生的 Dummy 物件之外,層代 1 和 2 通常是空的。 (在 CLR 的 32 位元實作中,虛擬物件的大小為 12 個位元組,在 64位元實作中較大。) 您可能也會看到模組 (由原生映像產生器 (NGen.exe) 製造) 中的第 2 代範圍。 在這個情況下,第 2 代中的物件是凍結物件,此物件會在 NGen.exe 執行時配置,而非由記憶體回收行程配置。

這個函式會使用呼叫端配置的緩衝區。

規格需求

平台:請參閱系統需求

標頭: CorProf.idl、CorProf.h

程式庫:CorGuids.lib

.NET Framework版本:自 2.0 起提供

另請參閱