共用方式為


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 方法。 也就是說,除了 ICorProfilerCallback2::GarbageCollectionStartedICorProfilerCallback2::GarbageCollectionFinished 之間發生的回呼外,它可從任何回呼中予以呼叫。

多數層代轉移會在記憶體回收期間發生。 層代可能會在集合之間成長,但通常不會移動。 因此,最適合呼叫 GetGenerationBounds 的位置為 ICorProfilerCallback2::GarbageCollectionStartedICorProfilerCallback2::GarbageCollectionFinished

在程式啟動期間,Common Language Runtime (CLR) 本身會配置一些物件 (一般在層代 3 和 0)。 因此,在 Managed 程式碼開始執行之前,這些層代已包含物件。 除了由記憶體回收行程所產生的空物件之外,層代 1 和 2 一般是空白的 (在 32 位元的 CLR 實作中,空物件的大小為 12 位元組,在 64 位元實作中則會更大)。您可能也會發現,層代 2 的範圍位在原生映像產生器 (NGen.exe) 所產生的模組之中。 在此情況下,層代 2 的物件為「凍結物件」(Frozen Object),這些是在 NGen.exe 執行時所配置的,而不是由記憶體回收行程所配置。

這個函式會使用呼叫端配置的緩衝區。 如需詳細資訊,請參閱程式碼剖析 API 方法慣例

需求

**平台:**請參閱 .NET Framework 系統需求

**標頭:**CorProf.idl、CorProf.h

**程式庫:**CorGuids.lib

**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

請參閱

參考

ICorProfilerInfo 介面

ICorProfilerInfo2 介面

其他資源

分析介面

分析 (Unmanaged API 參考)