Golang runtime MemStats翻訳

pkg.go.dev

Allocは、割り当てられたヒープオブジェクトのバイト数である。 これは HeapAlloc (後述) と同じである。 Alloc uint64

TotalAllocは、ヒープオブジェクトに割り当てられた累積バイト数です。

TotalAllocはヒープオブジェクトが割り当てられると増加しますが、AllocやHeapAllocとは異なり、オブジェクトが解放されても減少することはありません。 TotalAlloc uint64

Sysは、OSから取得したメモリの総バイト数です。 Sysは、以下のXSysフィールドの合計です。Sys は、ヒープ、スタック、その他の内部データ構造用に Go ランタイムが予約した仮想アドレス空間を測定します。一般的には、ある時点ですべての仮想アドレス空間が物理メモリにバックアップされているわけではありませんが、ある時点ですべての仮想アドレス空間が物理メモリにバックアップされている可能性があります。 Sys uint64

Lookupsはランタイムが実行したポインタのルックアップの数である。 これは主にランタイム内部をデバッグするのに便利である。 Lookups uint64

Mallocsは、割り当てられたヒープオブジェクトの累積数である。 ライブオブジェクトの数はMallocs - Freesである。 Mallocs uint64

Freesは、ヒープオブジェクトが解放された累積数です。 Frees uint64

HeapAllocは、割り当てられたヒープオブジェクトのバイト数です。 "割り当てられた "ヒープオブジェクトは、すべての到達可能なオブジェクトと、ガベージコレクタがまだ解放していない到達不可能なオブジェクトを含みます。具体的には、ヒープオブジェクトが割り当てられるとHeapAllocは増加し、ヒープが掃引され到達不可能なオブジェクトが解放されると減少します。掃引はGCサイクルの間にインクリメンタルに行われるので、この2つのプロセスは同時に発生し、その結果HeapAllocは滑らかに変化する傾向があります(Stop-the-Worldガベージコレクタに典型的に見られる鋸歯状とは対照的です)。 HeapAlloc uint64

HeapSysはOSから取得したヒープメモリのバイト数です。 // HeapSys は、ヒープ用に予約された仮想アドレス空間の量を測定します。これには、物理メモリは消費しないが小さくなりがちな、予約済みで未使用の仮想アドレス空間と、未使用になって物理メモリがOSに戻された仮想アドレス空間(後者の指標は HeapReleased を参照のこと)が含まれます。 // HeapSys は、ヒープが持つ最大のサイズを推定します。 HeapSys uint64

HeapIdle はアイドル(未使用)スパンでのバイト数です。 // アイドルスパンにはオブジェクトがありません。これらのスパンはOSに戻されるか(すでに戻されているかもしれない)、ヒープ割り当てに再利用されるか、スタックメモリとして再利用される。 // HeapIdleからHeapReleasedを引いた値は、OSに返せるがランタイムが保持しているメモリ量を推定し、OSにメモリを要求せずにヒープを成長させることができるようにする。この差がヒープサイズより著しく大きい場合、ライブヒープサイズに最近一時的なスパイクがあったことを示す。 HeapIdle uint64

HeapInuseは、使用中のスパンでのバイト数です。 // 使用中のスパンには、少なくとも1つのオブジェクトがあります。これらのスパンは、ほぼ同じサイズの他のオブジェクトにのみ使用することができます。 // HeapInuse から HeapAlloc を引いた値は、特定のサイズクラスに割り当てられているが、現在使用されていないメモリの量を推定する。これは断片化に対する上限であるが、一般にこのメモリは効率的に再利用できる。 HeapInuse uint64

HeapReleasedは、OSに返された物理メモリのバイト数です。 // これは、OSに戻され、まだヒープに再取得されていないアイドルスパンからのヒープメモリを数えます。 HeapReleased uint64

HeapObjects は、割り当てられたヒープオブジェクトの数です。 // HeapAlloc と同様、オブジェクトが割り当てられると増加し、ヒープが掃除され、到達できないオブジェクトが解放されると減少します。 HeapObjects uint64

StackInuse は、スタックスパンでのバイト数です。 // 使用中のスタックスパンには、少なくとも 1 つのスタックがあります。これらのスパンは、同じサイズの他のスタックにのみ使用することができます。 // 未使用のスタックスパンはヒープに戻されるため、StackIdle は存在しない(したがって HeapIdle にカウントされる)。 StackInuse uint64

StackSys は OS から取得したスタックメモリバイトである. // StackSys は StackInuse に、OS スレッドスタック用に OS から直接取得したメモリ(最小であるべき)を加えたものです。 StackSys uint64

MSpanInuseは,割り当てられたmspan構造体のバイト数. MSpanInuse uint64

MSpanSysはOSから取得したmspan構造体のメモリ量(バイト)です。 MSpanSys uint64

MCacheInuseは、割り当て済みmcache構造体のバイト数です。 MCacheInuse uint64

MCacheSysは、mcache構造体用にOSから取得したメモリのバイト数です。 MCacheSys uint64

BuckHashSysは、プロファイリングのバケットハッシュテーブルのメモリのバイト数です。 BuckHashSys uint64

GCSysは、ガベージコレクションメタデータに含まれるメモリのバイト数です。 GCSys uint64

OtherSysは、雑多なオフヒープランタイムアロケーションのメモリのバイト数です。 OtherSys uint64

NextGCは、次のGCサイクルのターゲットヒープサイズです。 // ガベージコレクタの目標は、HeapAlloc ≤ NextGC を維持することです。 各GCサイクルの終了時に、到達可能なデータ量とGOGCの値に基づいて、次のサイクルのターゲットが計算されます。 NextGC uint64

LastGCは、1970年(UNIXエポック)以降のナノ秒として、最後のガベージコレクションが終了した時間です。 LastGC uint64

PauseTotalNsは、プログラム開始以来、GCストップザワールドのポーズにおける累積ナノ秒です。 // 世界停止の間、すべてのゴルーチンは一時停止され、ガベージコレクタのみが実行できます。 PauseTotalNs uint64

PauseNsは、最近のGCのStop-the-World一時停止時間のナノ秒単位の円形バッファです。 一時停止時間をナノ秒単位で表したものです。 // 最新の一時停止は PauseNs[(NumGC+255)%256] にあります。一般的に、PauseNs[N%256]は、直近のN%256番目のGCサイクルで一時停止した時間を記録します。GCサイクルごとに複数の一時停止がある場合があります。これは、サイクル中のすべての一時停止の合計です。 PauseNs [256]uint64

PauseEndは、1970年(UNIXエポック)以降のナノ秒として、最近のGC一時停止終了時刻の循環バッファです。 // このバッファは、PauseNs と同じ方法で満たされます。GCサイクルごとに複数の一時停止があるかもしれません; これはサイクル内の最後の一時停止の終了を記録します。 PauseEnd [256]uint64

NumGCは、完了したGCサイクルの数です。 NumGC uint32

NumForcedGCは、GC関数を呼び出すアプリケーションによって強制されたGCサイクルの数です。 NumForcedGC uint32

GCCPUFractionは、プログラムが開始されてからGCによって使用されるこのプログラムの利用可能なCPU時間の割合です。 // GCCPUFraction は 0 と 1 の間の数値で表され、0 は GC がこのプログラムの CPU を全く消費していないことを意味します。プログラムの利用可能な CPU 時間は、プログラム開始以来の GOMAXPROCS の積分として定義されます。つまり、GOMAXPROCS が 2 で、プログラムが 10 秒間実行されている場合、その「利用可能な CPU」は 20 秒です。GCCPUFraction には、書き込みバリアアクティビティに使用される CPU 時間は含まれません。 // これはGODEBUG=gctrace=1によって報告されるCPUの割合と同じである。 GCCPUFraction float64

EnableGCは、GCが有効であることを示す。GOGC=offの場合でも、常にtrueである。 EnableGC bool

DebugGC は現在未使用。 DebugGC bool

BySize は、サイズごとのクラス割り当て統計情報を報告します。 // BySize[N] は、 BySize[N-1].Size < S ≤ BySize[N].Size となるサイズ S の割り当てに関する統計情報を提供します。 // BySize[60].Sizeより大きなアロケーションは報告されません。 BySize [61]struct { (構造体) Sizeは、このサイズクラスにおけるオブジェクトの最大バイトサイズです。 Size uint32

Mallocsは、このサイズクラスで割り当てられたヒープオブジェクトの累積数です。割り当ての累積バイト数は、Size*Mallocsです。このサイズクラスで生きているオブジェクトの数は、Mallocs - Freesです。
Mallocs uint64

Freesは、このサイズ・クラスで解放されたヒープ・オブジェクトの累積数です。
Frees uint64

}