Share via


記憶體效能計數器

效能主控台 .NET CLR Memory 分類包含提供記憶體回收行程之相關資訊的計數器。 下表描述的是這些效能計數器。

效能計數器

描述

# Bytes in all Heaps

顯示 Gen 1 Heap SizeGen 2 Heap SizeLarge Object Heap Size 計數器的總和。 這個計數器指示目前記憶體回收堆積所配置的記憶體 (以位元組為單位)。

# GC Handles

顯示目前使用中的記憶體回收控制代碼的數目。 記憶體回收控制代碼是 Common Language Runtime 和 Managed 環境外部的資源的控制代碼。

# Gen 0 Collections

顯示自應用程式啟動後,層代 0 物件 (最年輕、最近配置的物件) 回收記憶體的次數。

層代 0 可用記憶體不足以滿足配置要求時,就會進行層代 0 記憶體回收。 這個計數器會在層代 0 記憶體回收結束時遞增。 層代較高的記憶體回收包含所有層代較低的回收。 發生較高層代 (層代 1 或層代 2) 記憶體回收時,這個計數器會明確遞增。

這個計數器會顯示最後觀察到的值。 _Global_ 計數器的值不夠精確,應予以忽略。

# Gen 1 Collections

顯示自應用程式啟動後,層代 1 物件回收記憶體的次數。

這個計數器會在層代 1 記憶體回收結束時遞增。 層代較高的記憶體回收包含所有層代較低的回收。 發生較高層代 (層代 2) 記憶體回收時,這個計數器會明確遞增。

這個計數器會顯示最後觀察到的值。 _Global_ 計數器的值不夠精確,應予以忽略。

# Gen 2 Collections

顯示自應用程式啟動後,層代 2 物件回收記憶體的次數。 計數器會在層代 2 記憶體回收 (也稱為完全記憶體回收) 結束時遞增。

這個計數器會顯示最後觀察到的值。 _Global_ 計數器的值不夠精確,應予以忽略。

# Induced GC

顯示明確呼叫 GC.Collect 而執行記憶體回收的次數高峰。 讓記憶體回收行程調整其回收頻率,是一個很好的示範。

# of Pinned Objects

顯示最後一次記憶體回收遇到的 Pin 物件數目。 Pin 物件是記憶體回收行程無法在記憶體中移動的物件。 這個計數器只會追蹤在記憶體回收的堆積中的 Pin 物件。 例如,層代 0 記憶體回收只會列舉層代 0 堆積中的 Pin 物件。

# of Sink Blocks in use

顯示目前使用中的同步區塊數目。 同步區塊是配置用來存放同步處理資訊的全物件資料結構。 同步區塊會儲存 Managed 物件的弱式參考,且必須由記憶體回收行程掃描。 同步區塊不限於存放同步處理資訊;也可以儲存 COM Interop 中繼資料 (Metadata)。 這個計數器會指示大量使用同步處理基礎的效能問題。

# Total committed Bytes

顯示記憶體回收行程目前配置的虛擬記憶體數目 (以位元組為單位)。 配置的記憶體是在磁碟分頁檔中保留空間的實體記憶體。

# Total reserved Bytes

顯示虛擬記憶體的數量。 目前由記憶體回收行程保留的記憶體,以位元組為單位。 保留的記憶體是保留給應用程式、但是未使用磁碟或主記憶體分頁的虛擬記憶體空間。

% Time in GC

顯示自上次記憶體回收循環後,執行記憶體回收所耗用的時間百分比。 這個計數器通常指示記憶體回收行程所完成以代替應用程式回收和壓縮記憶體的工作。 這個計數器只會在每次記憶體回收結束時更新。 計數器的值不是平均數;其值反映的是最後的觀察到的值。

Allocated Bytes/second

顯示每秒在記憶體回收堆積上配置的位元組數目。 這個計數器會在每次記憶體回收 (而非每次配置) 結束時更新。 這個計數器不是時間累積下的平均數;它會顯示最後兩個樣本中觀察到的值之間的差異除以樣本間隔的持續期間。

Finalization Survivors

顯示在回收時存留下來 (因為正在等候結束) 的記憶體回收物件的數目。 如果這些物件儲存了對其他物件的參考,被參考的物件也會存留下來,但是不會在這個計數器中計數。 Promoted Finalization-Memory from Gen 0Promoted Finalization-Memory from Gen 1 計數器代表因為結束處理而存留下來的所有記憶體。

這個計數器不會累積;它會在每次記憶體回收結束時更新,只計算特定回收中存留記憶體的計數。 這個計數器會指示應用程式可能因為結束處理而造成的額外空間配置。

Gen 0 heap size

顯示可以在層代 0 配置的最大位元組;這不包含目前已在層代 0 配置的位元組數目。

自上次回收後的配置超出這個大小時,就會進行層代 0 記憶體回收。 層代 0 大小是由記憶體回收行程調整,可以在應用程式執行時變更。 層代 0 回收結束時,層代 0 堆積的大小是 0 個位元組。 這個計數器會顯示叫用下一次層代 0 記憶體回收的配置大小 (以位元組為單位)。

這個計數器會在每次記憶體回收 (而非每次配置) 結束時更新。

Gen 0 Promoted Bytes/Sec

顯示每秒從層代 0 升級至層代 1 的位元組。 從記憶體回收中存留下來的記憶體就會升級。 這個計數器是每秒建立的存留期相對較長的物件的指示器。

這個計數器會顯示最後兩個樣本中觀察到的值之間的差異除以樣本間隔的持續期間。

Gen 1 heap size

顯示層代 1 中的目前位元組數目。這個計數器不會顯示層代 1 的大小上限。 物件不會直接配置在這個層代中。它們是從先前層代 0 的記憶體回收升級而來。 這個計數器會在每次記憶體回收 (而非每次配置) 結束時更新。

Gen 1 Promoted Bytes/Sec

顯示每秒從層代 1 升級至層代 2 的位元組。 在這個計數器中不包括只因等候最終處理而被升級的物件。

從記憶體回收中存留下來的記憶體就會升級。 層代 2 是最老的層代,所以不會再升級。 這個計數器是每秒建立的極長存留期物件的指示器。

這個計數器會顯示最後兩個樣本中觀察到的值之間的差異除以樣本間隔的持續期間。

Gen 2 heap size

顯示層代 2 中的目前位元組數目。 物件不會直接配置在這個層代中。它們是在先前層代 1 的記憶體回收期間,從層代 1 升級而來。 這個計數器會在每次記憶體回收 (而非每次配置) 結束時更新。

Large Object Heap size

顯示大型物件堆積的目前大小 (以位元組為單位)。 記憶體回收行程將大於 20 KB 的物件都當成大型物件處理,並會在特殊堆積中直接配置;這些物件不會透過不同層代升級。 這個計數器會在每次記憶體回收 (而非每次配置) 結束時更新。

Promoted Finalization-Memory from Gen 0

顯示只因為等候結束處理而從層代 0 升級至層代 1 的記憶體位元組。 這個計數器不會累積;它會顯示在最後一次記憶體回收時觀察到的值。

Promoted Finalization-Memory from Gen 1

顯示只因為等候結束處理而從層代 1 升級至層代 2 的記憶體位元組。 這個計數器不會累積;它會顯示在最後一次記憶體回收時觀察到的值。 如果最後的記憶體回收只是層代 0 回收,這個計數器會重設為 0。

Promoted Memory from Gen 0

顯示未被記憶體回收,並從層代 0 升級至層代 1之記憶體的位元組。 在這個計數器中不包括只因等候最終處理而被升級的物件。 這個計數器不會累積;它會顯示在最後一次記憶體回收時觀察到的值。

Promoted Memory from Gen 1

顯示未被記憶體回收,並從層代 1 升級至層代 2 之記憶體的位元組。 在這個計數器中不包括只因等候最終處理而被升級的物件。 這個計數器不會累積;它會顯示在最後一次記憶體回收時觀察到的值。 如果最後的記憶體回收只是層代 0 回收,這個計數器會重設為 0。

請參閱

參考

執行階段分析

概念

自動記憶體管理

其他資源

.NET Framework 中的效能計數器