2011-09-12 3 views
5

curiosità di inattività ...Perché Process.WorkingSet> Process.MaxWorkingSet?

sto guardando alcune delle proprietà del processo in corso:

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 
} 

Dalla mia lettura della documentazione, queste proprietà sono tutti legati alle dimensioni del working set in byte, quindi mi aspettavo di vedere:

MinWorkingSet <= WorkingSet <= MaxWorkingSet 

Questo non è il caso, qualcuno può spiegare perché?

+4

Mi sembra che MaxWorkingSet sia più grande. Guarda il punto in WorkingSet. –

+1

@Brian, mi scuso, quel periodo dovrebbe essere una virgola, corretto. Ho sostituito manualmente il mio separatore delle migliaia locali con una virgola e ho perso quello. – Joe

+0

Nessun problema e +1 per una buona domanda. –

risposta

2

MaxWorkingSet e MinWorkingSet sono i valori restituiti dall'API Win32 GetProcessWorkingSetSize. Questi sono i limiti utilizzati dal gestore virtuale che verranno applicati quando la memoria scarseggia. Se è disponibile memoria sufficiente, è possibile che la dimensione del working set corrente aumenti più del valore in MaxWorkingSet.

+0

Interessante. Se si dispone di un account MSDN sarebbe bello se si potesse a queste informazioni. – Bobby

+0

@plodoc, grazie, questo lo rende chiaro. – Joe

1

Mentre il MSDN is not reallyhelpful in this case, una piccola indagine con il Process Explorer d'altra parte ha rivelato che i valori per Private Memory/MaxWorkingSet e Shared Memory/WorkingSet fanno quasi esattamente partita.

Il che mi fa credere (sì, mi manca prove concrete) che il MaxWorkingSet fa visualizzare la memoria privata, mentre la WorkingSet64 fa visualizzare la memoria completa, tra cui uno condiviso.

So cosa dice MSDN ... e non mi interessa, vedo qualcosa di diverso in Process Explorer.

+0

Informazioni sull'ultima frase: Vi sono numerosi esempi, nessuno dei quali posso ricordare in questo momento, che mostra che l'MSDN ha effettivamente degli errori. Quindi, se osservi qualcosa che contraddice MSDN, i cambiamenti sono alti, che MSDN ha un errore e non che la tua osservazione sia errata. –

+0

In questo caso, MSDN è corretto :) – plodoc

+0

Quando aggiungo le colonne Min Working Set e Max Working Set in Process Explorer su Windows 2008 R2, vedo che tutto il processo eccetto dwm.exe (Desktop Windows Manager ha aumentato i suoi valori) avere gli stessi valori 200Kb e 1300 Kb, che sono visti anche da Joe. – plodoc