GCMemoryInfo.MemoryLoadBytes プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
最後のガベージ コレクションが発生したときの物理メモリの負荷を取得します。
public:
property long MemoryLoadBytes { long get(); };
public long MemoryLoadBytes { get; }
member this.MemoryLoadBytes : int64
Public ReadOnly Property MemoryLoadBytes As Long
プロパティ値
最後のガベージ コレクションが発生したときの物理メモリの読み込み (バイト単位)。
注釈
プロセスがコンテナーで実行されていない場合、またはメモリ制限なしでコンテナーで実行されている場合:
- Windowsでは、MemoryLoadBytes は、MEMORYSTATUS 構造体 から取得されます (バイト単位)。
- Linux では、MemoryLoadBytes は、 /proc/meminfo から MemAvailable フィールドを物理メモリの合計で除算して取得します。
メモリ制限のあるコンテナーでプロセスが実行されている場合、または cgroup の制限が設定されている場合:
- Windowsでは、MemoryLoadBytes は PROCESS_MEMORY_COUNTERS 構造体 のワーキング セット サイズ フィールドからメモリ制限で割ったバイト単位で取得されます。
- Linux では、MemoryLoadBytes は、CGroup v1 の場合は memory.usage_in_bytes から CGroup メモリ使用量ファイルを使用し、CGroup の場合は memory.current v2 をメモリ制限で除算して、使用された物理メモリから取得します。 cgroup の制限は、必ずしもコンテナーがあることを意味するとは限りません。 cgroup を使用して、通常のプロセスに制限を設定できます。
Linux では、cgroup が有効になっていない場合、使用された物理メモリが /proc/statm ファイルから読み取られます。このファイルは、プロセス常駐セット サイズを提供します。
Linux では、仮想メモリの負荷が設定され、負荷が物理メモリの負荷よりも大きい場合にも、仮想メモリの負荷が使用されます。
データは、最初のタッチでのみ物理メモリに取り込まれます。 大きなオブジェクトを割り当てても実際に使用していない場合、そのメモリのほとんどは物理メモリ内にありません。 この場合、割り当てはメモリ負荷に大きな影響を与えません。