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?