Devo commentare i commenti alla domanda, in particolare la confusione tra "tabella delle pagine" e "file delle pagine". Questa non è una risposta ma non si adatta allo spazio consentito per i commenti.
La "tabella delle pagine" è in effetti molto diversa dal file di paging. Avere n MB di RAM usati per le tabelle delle pagine non significa che stai usando n MB di spazio per i file di paging. E sebbene alcune voci della tabella delle pagine (PTE, che sono costituite dalle tabelle delle pagine) facciano riferimento al contenuto del file di paging, non tutti lo fanno.
Le tabelle di pagine sono strutture in memoria utilizzate dalla MMU della CPU per eseguire la traduzione degli indirizzi da indirizzi virtuali (di nuovo, non il file di paging) a indirizzi fisici e dal sistema operativo per tenere traccia dello spazio di indirizzi virtuali e aiutare a risolvere i guasti di pagina. Le tabelle delle pagine sono costituite da voci della tabella delle pagine (PTE). Ogni PTE occupa 8 byte e definisce 4K byte di spazio di indirizzi virtuali, ovvero una pagina virtuale. Esiste approssimativamente un PTE per ogni pagina non libera dello spazio di indirizzi virtuale.
A proposito, anche se il file di paging può sperimentare una frammentazione sia esterna che interna (il primo di solito non è un grosso problema; il secondo può essere migliorato rendendolo circa quattro volte più grande di quello che deve essere), le tabelle di paging no. Sono quasi sempre frammentati e non importa minimamente.
Ogni PTE ha un bit "valido". Per le pagine "valide", ovvero "residenti", il PTE contiene il numero di pagina fisica che corrisponde al numero di pagina virtuale associato al PTE; questo è usato direttamente dalla MMU.
Per le pagine "non valide" la MMU genera un errore di pagina e la PTE ha quindi molti formati e interpretazioni possibili.
Nota: tutto quanto sopra si applica a qualsiasi sistema operativo che abilita il paging su x86 / x64. Quanto segue è ampiamente specifico di Windows, ma molti dei concetti si applicano ad altri sistemi operativi, con differenze nei dettagli dell'implementazione.
Per una pagina nella cache delle pagine, il PTE contiene ancora il numero di pagina fisico. Per le pagine che sono state perse dalla RAM e scritte nel file di paging, il PTE contiene il numero del file di paging e l'offset all'interno del file di paging in cui sono stati scritti i contenuti della pagina. Altri possibili contenuti PTE sono riferimenti a descrittori di indirizzi virtuali , riferimenti a "prototipi di PTE", riferimenti a richiesta zero pagine, ecc., Nei quali non ho intenzione di entrare. Basti dire che solo alcuni dei PTE si riferiscono a posizioni nei file di paging.
Dico tutto questo principalmente per mostrare che il file di paging e le tabelle di pagina, sebbene correlate, non sono sicuramente la stessa cosa.
Le tabelle delle pagine sono organizzate in una struttura ad albero. Esiste un albero o una raccolta di tabelle di pagine differenti per ciascun processo: questo è ciò che consente a ciascun processo di definire la propria istanza di spazio di indirizzi virtuale. La tabella delle pagine nella radice dell'albero deve essere sempre nella RAM. Gli altri sono paginabili; sono persino inesistenti dove corrisponderebbero a grandi (minimo 2 MB) regioni di spazio di indirizzi virtuali indefiniti o liberi.
Le voci della tabella delle pagine nelle tabelle alle "foglie" dell'albero corrispondono alle pagine dello spazio degli indirizzi virtuali. Le PTE nelle tabelle di livello superiore - quelle più vicine alla radice (e alla radice stessa) - indicano dove si trovano le successive tabelle di livello inferiore (se esistono affatto).
Il numero mostrato da RAMmap è la memoria fisica (RAM) occupata da tutte le tabelle di pagine residenti (in-RAM) per tutti i processi più il sistema operativo.
Ciò che è importante qui è che il sistema nell'OQ avesse 2,5 GB di RAM collegati con le tabelle delle pagine. Ciò significa che, come minimo, sono definiti 2,5 GB di tabelle di pagine. Poiché le tabelle di pagine sono esse stesse impaginabili, la dimensione virtuale potrebbe essere molto più grande della dimensione fisica, il che è tutto ciò che RAMmap può mostrarci. Ma supponiamo che sia "solo" 2,5 GB. A otto byte per PTE sono circa 320 milioni di PTE. Poiché ogni PTE definisce una pagina - 4K byte - di spazio di indirizzi virtuali, ciò significa che oltre 1,2 terabyte di spazio di indirizzi virtuali sono definiti da tabelle di pagine in memoria .
Non è impossibile ma è piuttosto molto.
Per riferimento, sul mio atm di sistema, ho circa 125 MB di RAM nelle tabelle delle pagine. Ciò indicherebbe solo circa 65 GB di spazio di indirizzi virtuali. Il mio effettivo utilizzo virtuale è molto più elevato (125 TB solo per i processi) ma ciò è dovuto al fatto che la maggior parte delle tabelle delle pagine non sono nella RAM. Le "pagine grandi", un'altra cosa che non dovrei approfondire qui, possono anche aiutare a tenere conto di rapporti diversi tra dimensione delle tabelle di pagine e dimensione dello spazio di indirizzi virtuali in uso.
Quindi: per trovare il colpevole, per prima cosa vorrei andare a Performance Monitor nella categoria Processo per i processi con un valore contatore "Virtual Bytes" elevato.