5

怠惰な好奇心...

現在のプロセスのいくつかのプロパティを見ています。

using(Process p = Process.GetCurrentProcess())
{
    // Inspect properties
    // p.MaxWorkingSet = 1,413,120
    // p.MinWorkingSet = 204,800
    // p.WorkingSet = 54,140,928
    // p.WorkingSet64 = 54,140,928
}

ドキュメントを読んだところ、これらのプロパティはすべてワーキング セットのサイズ (バイト単位) に関連しているため、次のことが期待されていました。

MinWorkingSet <= WorkingSet <= MaxWorkingSet

これは事実ではありません。誰かが理由を説明できますか?

4

2 に答える 2

2

MaxWorkingSetとMinWorkingSetは、Win32APIGetProcessWorkingSetSizeによって返される値です。これらは、メモリが不足しているときに適用される仮想マネージャーによって使用される制限です。十分なメモリが使用可能である限り、現在のワーキングセットのサイズはMaxWorkingSetの値よりも大きくなることが許可されます。

于 2011-10-11T16:00:08.543 に答える
1

この場合、MSDNはあまり 役に立ちませんが、一方、 Process Explorerを使用した小さな調査では、Private Memory/MaxWorkingSetShared Memory/の値WorkingSetがほぼ正確に一致していることがわかりました。

これは、共有メモリを含む完全なメモリを表示しているのに対し、はプライベートメモリを表示していると私に信じさせます(確かな証拠はありません) 。MaxWorkingSetWorkingSet64

私はMSDNが何を言っているか知っています...そして私は気にしません、私はProcessExplorerで何か違うものを見ます。

于 2011-09-12T12:22:59.813 に答える