Ciò a cui accenna lui è la "memoria virtuale", lo spazio di indirizzamento virtuale dentro cui ogni programma si trova.
Ad ogni modo:
Visualizza allegato 453931
sotto la voce Vincolata (faccio notare che in inglese l'etichetta è invece 'Committed', quindi 'impegnata') i due numeri indicano quello che viene chiamato "commit charge" e "commit limit", rispettivamente.
Il "commit charge" indica il la memoria virtuale effettivamente impegnata nel sistema.
Il "commit limit" è la somma della RAM + i page file(s).
Il commit limit aumenta se il page file(s) viene espanso da windows (e vedrai in quel caso il commit limit, il secondo numero, crescere di conseguenza).
Se disabiliti il page file, come numero vedrai la RAM totale a disposizione.
Il "commit charge" contiene... di tutto. Tecnicamente si tratta di memoria allocata con VirtualAlloc oppure con MapViewOfFile (e mi sembra altro); paged pool e non-paged pool sono sempre qui dentro. A questo valore va poi aggiunta la dimensione degli stack dei thread in kernel mode e le tabelle delle pagine; inoltre c'è lo spazio che potrebbe essere necessario in caso di future allocazioni (sempre relativo alla tabella delle pagine).
Il commit charge indica la dimensione potenziale che può raggiungere il page file, non l'utilizzo attuale; è la dimensione che verrebbe occupata se tutta la memoria virtuale impegnata venisse paginata sul disco, in pratica.
Il commit charge non può superare il commit limit.
La cosa che non ho però capito è se lo stai affermando e ne sei stupito, oppure se è una costatazione e basta.
E' come dici ovviamente, non serve condurre altri test a riguardo: se l'applicazione continua ad allocare memoria raggiunto il limite massimo crolla tutto, e vedi il crash.
Il paging e la memoria virtuale non sono mai stati la medesima cosa. Si tratta di "cose" utilizzate da ormai decenni. Il paging non è un quantitativo di memoria virtuale, stai mettendo assieme un pò troppe cose.
In particolare:
la memoria virtuale è
sempre presente. Ogni singolo programma nel tuo sistema ha uno spazio di indirizzi che è appunto virtuale e riservato. Con la memoria virtuale - suddivisa in pagine, che rispecchiano quelle su disco (non al paging file) - hai in esecuzione N programmi (in realtà, parti del programma, il "working set") ciascuno dei quali non può accedere alla memoria degli altri programmi (insomma, non è sempre così in realtà, ci sono programmi "shared", condivisi, come le librerie dinamiche (DLL)).
Le pagine vengono "paginate" (paged-out) su disco non solo quando la RAM è satura e altre allocazioni non sono possibili (in taluni casi di solito iniziano a crashare anche i programmi, poichè vengono rimossi dall'esecuzione).
La memoria virtuale disponibile in x64 (poichè è stata limitata... e bla bla bla xD) è di soli 256TB, metà dei quali per il kernel mode e l'altra metà per i programmi utente; quindi hai a disposizione 128TB di memoria virtuale.