Ho fatto un programmino che mi mostra i processi attivi e la memoria che usano:
codice:
Dim ELEM As ListViewItem, PercorsoCompleto As String, ProcessiAttivi As Process()
'azzero la listview e creo le colonne
lstwProcessi.Items.Clear()
lstwProcessi.Columns.Clear()
lstwProcessi.Columns.Add("PID", 80)
lstwProcessi.Columns.Add("nome", 180)
lstwProcessi.Columns.Add("ram", 150)
lstwProcessi.Columns.Add("percorso", 290)
ProcessiAttivi = Process.GetProcesses() 'prendo tutti i processi attivi
For ContatoreProc As Integer = 0 To ProcessiAttivi.Length - 1
ELEM = lstwProcessi.Items.Add(ProcessiAttivi(ContatoreProc).Id.ToString) 'numero PID
ELEM.SubItems.Add(ProcessiAttivi(ContatoreProc).ProcessName) 'nome breve del processo
ELEM.SubItems.Add(ProcessiAttivi(ContatoreProc).WorkingSet64) 'ram usata
PercorsoCompleto = ""
Try
PercorsoCompleto = ProcessiAttivi(ContatoreProc).MainModule.FileName
Catch ex As Exception
PercorsoCompleto = "[Accesso Negato]"
Finally
ELEM.SubItems.Add(PercorsoCompleto) 'percorso completo del file del processo
End Try
Next ContatoreProc
il problema è questo: la proprietà WorkingSet64 mi dà un quantitativo di memoria diverso da quello che vedo nel task manager di windows.
Ad esempio: se controllo, con lo stesso numero PID, quanta memoria assorbe il processo firefox.exe, Windows mi dice 122 MB e il mio programma 153 MB. Anche per gli altri processi il quantitativo non combacia.
Perché?
Forse che la proprietà WorkingSet64 non è quella giusta, ne serve un'altra?