Nel 2026 il mercato della memoria RAM sta attraversando una fase critica: la domanda travolgente di memoria da parte dei grandi datacenter dedicati all’intelligenza artificiale ha spinto i prezzi al dettaglio fino a raddoppiare o più, rendendo difficile e costoso per consumatori e professionisti reperire moduli DDR5 e DDR4 di capacità elevata. La RAM è quindi diventata una risorsa non solo fondamentale ma anche economicamente significativa per chi costruisce, aggiorna o gestisce sistemi basati su Windows.
Quando la memoria fisica diventa costosa, ottimizzarne l’uso diventa ancora più rilevante. È qui che entra in gioco RAMMap, uno strumento gratuito sviluppato da Sysinternals per analizzare in dettaglio come Windows utilizza ogni singolo byte di RAM: ben oltre ciò che può mostrare il Task Manager.
Cos’è RAMMap e perché è diverso dagli altri strumenti
RAMMap (download gratuito) è uno strumento avanzato di analisi della memoria sviluppato da Microsoft all’interno della suite Sysinternals. A differenza del Task Manager o del Monitoraggio risorse di sistema (Windows+R, quindi digitare resmon), RAMMap non si limita a mostrare quanta memoria è in uso, ma spiega come e perché quella memoria è allocata.
Il punto di forza di RAMMap è la sua capacità di esporre la mappatura interna della memoria fisica, mostrando con precisione quali porzioni di RAM sono occupate da kernel e driver, file mappati (file su disco caricati direttamente in RAM tramite mappatura), cache del file system (porzione di RAM che Windows usa per memorizzare temporaneamente dati dei file più usati), heap dei processi, memoria standby e modified.
La memoria standby fa riferimento a RAM già usata in passato che Windows tiene “in attesa” perché potrebbe servire di nuovo; la memoria modified è RAM che contiene dati modificati che devono ancora essere scritti su disco.
La scheda Use Counts di RAMMap
Avviando RAMMap, la prima scheda dinanzi alla quale ci si trova si chiama Use Counts.
- La colonna Active rappresenta la memoria attualmente utilizzata da processi, kernel e driver, non immediatamente recuperabile, che Windows non può liberare senza terminare qualcosa. È questa la memoria che, se cresce nel tempo e non diminuisce mai, indica un problema reale (memory leak). Le altre voci visualizzate non fanno riferimento a porzioni di memoria RAM realmente bloccate.
- Standby rappresenta memoria usata come cache. Contiene dati ancora validi (file, librerie, codice) che Windows mantiene pronti per un riutilizzo rapido. È memoria immediatamente recuperabile e non costituisce un problema: una Standby elevata è normale e desiderabile. In condizioni sane, la memoria Standby rappresenta un buon cuscinetto: se Standby è molto bassa insieme a Active alta e stabile, il sistema è in stato di pressione costante.
- Modified indica invece pagine che sono state cambiate in memoria e che devono essere scritte su disco prima di poter essere riutilizzate. In condizioni normali il valore resta contenuto; se cresce in modo persistente può indicare un carico I/O elevato o applicazioni che producono molte modifiche in RAM.
- Modified (No Write) è una variante più rara: si tratta di pagine modificate che non possono essere scritte su disco perché non associate a un file o a un backing store (il “luogo” su disco a cui una pagina di memoria può appoggiarsi quando Windows deve spostarla fuori dalla RAM). Questa memoria resta occupata finché non viene liberata dal componente che l’ha allocata ed è spesso legata a driver o strutture kernel.
- Transition indica pagine che stanno cambiando stato, ad esempio perché rimosse dal working set di un processo ma non sono ancora state inserite nella Standby list. È una condizione transitoria e normalmente rappresenta quantità ridotte di memoria.
- Zeroed rappresenta memoria completamente libera e già azzerata, pronta per essere assegnata immediatamente a un processo. Nei sistemi moderni questa voce è spesso bassa, perché Windows preferisce riutilizzare prima la Standby Memory piuttosto che mantenere RAM inutilizzata.
- Free indica memoria davvero libera (ma poco significativa). La colonna indica la memoria fisica attualmente non utilizzata da nulla. Sono pagine che non contengono dati utili, non sono cache e non sono associate a processi o al kernel. Nei sistemi Windows moderni, il valore è spesso molto contenuto ed è del tutto normale. Windows è progettato per usare la RAM come risorsa attiva: se può impiegarla come cache o tenerla pronta in Standby, lo fa.
- Bad rappresenta pagine di memoria fisica che Windows ha marcato come difettose e non più utilizzabili. Si tratta di RAM che il sistema ha rilevato come instabile o corrotta e che viene quindi esclusa per evitare errori più gravi.
Come leggere le righe della scheda Use Counts
Nella scheda Use Counts di RAMMap, le righe non rappresentano lo stato della memoria, ma l’origine e il tipo di componente che la sta utilizzando. Mentre le colonne indicano se una pagina è Active, Standby o Modified, le righe rispondono a una domanda diversa e fondamentale: chi sta occupando quella RAM.

Memoria dei processi e file mappati
La voce Process Private identifica la memoria privata allocata dalle applicazioni in user mode. È la RAM che appartiene esclusivamente a un processo e che non può essere condivisa. Una crescita progressiva e persistente di questa riga, soprattutto nella colonna Active, è uno dei segnali più chiari di memory leak applicativo.
Mapped File e Shareable, invece, rappresentano memoria associata a file mappati e componenti condivisibili come DLL e codice comune. Sono categorie sono spesso legate alla cache del file system e, nella maggior parte dei casi, non indicano un problema.
Le strutture di gestione della memoria
Voci come Page Table e System PTE mostrano quanta RAM è dedicata alle strutture interne necessarie a Windows per gestire la memoria virtuale. I valori crescono con il numero di processi e con l’intensità d’uso del sistema. Diventano rilevanti soprattutto quando aumentano in modo anomalo o sproporzionato rispetto al carico reale.
Il cuore dei problemi kernel
Paged Pool e soprattutto Nonpaged Pool rappresentano memoria allocata dal kernel e dai driver. La differenza è cruciale: il Paged Pool può essere scritto su disco, il Nonpaged Pool no. Se quest’ultimo cresce costantemente nel tempo, senza mai ridursi, RAMMap sta segnalando uno dei problemi più seri possibili su Windows: un memory leak a livello driver o kernel.
In questo stesso ambito rientrano Driver Locked e Kernel Stack, che indicano memoria bloccata dai driver o utilizzata dagli stack del kernel. Anche qui, la crescita anomala è quasi sempre un campanello d’allarme.
Sessioni, filesystem e scenari speciali
Session Private riguarda la memoria legata alle sessioni utente ed è particolarmente rilevante in ambienti multi-utente o server. Metafile indica la cache dei metadati del file system, normale su sistemi con forte attività I/O.
Voci come AWE e Large Page compaiono in scenari specifici, come database o applicazioni ad alte prestazioni, e vanno interpretate nel contesto del software installato.
La chiave di lettura corretta
In Use Counts le colonne raccontano in che stato si trova la memoria, mentre le righe spiegano chi la sta usando. È l’incrocio tra queste due dimensioni che rende RAMMap uno strumento diagnostico unico: non mostra solo quanta RAM è occupata, ma permette di capire da quale componente del sistema proviene l’occupazione e se è fisiologica o “patologica”.
Cosa sono i memory leak?
I memory leak sono errori di gestione della memoria in cui un’applicazione, un servizio o un componente di sistema alloca memoria senza rilasciarla correttamente quando non serve più.
Nel tempo, tale memoria rimane occupata anche se non viene più utilizzata, riducendo progressivamente le risorse disponibili per il resto del sistema. A differenza di un picco temporaneo di consumo, un memory leak si manifesta come una crescita lenta e costante della memoria “attiva”, che non torna ai livelli iniziali nemmeno chiudendo applicazioni o riducendo il carico di lavoro.
Su Windows, i memory leak possono verificarsi sia in user mode, all’interno delle applicazioni, sia a livello kernel o driver, dove risultano particolarmente insidiosi perché coinvolgono memoria che non può essere facilmente spostata su disco.
Il sistema operativo tenta di compensare comprimendo la memoria o usando il file di paging, ma queste sono solo contromisure temporanee. Se il leak persiste, la memoria virtuale si avvicina al limite, le prestazioni degradano e possono comparire errori di allocazione o instabilità.
Il problema principale dei memory leak è che non producono sintomi immediati: il sistema può funzionare apparentemente bene per ore o giorni prima di mostrare rallentamenti evidenti. Proprio per questo servono strumenti di analisi come RAMMap, che permettono di osservare l’evoluzione dell’uso della memoria nel tempo e distinguere un consumo fisiologico da una perdita reale.
Confronto tra RAMMap e Task Manager
Il Task Manager di Windows e RAMMap, strumento della suite Sysinternals sviluppata da Microsoft, osservano la memoria RAM da due prospettive completamente diverse.
Premendo CTRL+MAIUSC+ESC per accedere al Task Manager (Gestione attività, in italiano), la funzione di sistema di Windows fornisce una sintesi orientata all’utente. RAMMap, invece, espone la struttura interna reale del memory manager. I numeri non sempre coincidono perché non misurano le stesse cose.
In uso (compressa) e RAMMap: cosa rappresenta davvero
Nel Task Manager, la voce In uso (compressa) indica la memoria fisica attualmente occupata, includendo anche la porzione compressa mantenuta in RAM per ridurre l’uso del file di paging (memoria virtuale). È una metrica pensata per dare un’idea immediata di quanta RAM non sia liberamente disponibile.
In RAMMap, questo valore non esiste come singola voce. È distribuito principalmente nella colonna Active della scheda Use Counts, sommando i contributi provenienti da più righe: Process Private, Paged Pool, Nonpaged Pool, Kernel Stack, Driver Locked e così via.
“Disponibile” e “Cache”: perché i numeri confondono
Nel Task Manager, la voce Disponibile include sia la memoria RAM realmente libera sia quella immediatamente recuperabile. Il valore Cache rappresenta la memoria usata come cache del file system.
In RAMMap, questi concetti sono separati con molta più precisione. La memoria “disponibile” del Task Manager corrisponde principalmente alla somma di Standby e Zeroed in Use Counts. La cache, invece, è visibile soprattutto nelle righe Mapped File e Metafile, distribuite tra Standby ed Active.
Ecco perché RAMMap mostra chiaramente che una cache elevata non è RAM sprecata, mentre il Task Manager tende a presentarla come qualcosa di ambiguo.
Pool di paging e pool non di paging: qui i due strumenti coincidono
Le voci Pool di paging e Pool non di paging del Task Manager trovano una corrispondenza diretta in RAMMap.
Nella scheda Use Counts, le righe Paged Pool e Nonpaged Pool rappresentano esattamente le stesse aree di memoria, ma RAMMap aggiunge un’informazione cruciale: in che stato si trovano quelle pagine (Active, Modified, e così via).
È qui che RAMMap diventa insostituibile: rispetto al Task Manager, l’applicazione Sysinternals permette di capire se la porzione di memoria cresce nel tempo e non viene mai rilasciata, segnale tipico di memory leak a livello di kernel o driver.
“Vincolata” e backing store: un concetto che RAMMap rende visibile
La voce Vincolata del Task Manager indica la quantità di memoria virtuale impegnata rispetto al limite complessivo (RAM + file di paginazione). È un numero astratto, utile per capire se il sistema si sta avvicinando a un esaurimento della memoria virtuale.
RAMMap non mostra la memoria vincolata come concetto unico, ma rende visibile la qualità di quella memoria. Ad esempio, quando osserviamo pagine in Modified (No Write) o Nonpaged Pool, si sta prendendo in esame della memoria che non ha backing store o che non può essere facilmente scaricata su disco. È una lettura molto più tecnica, ma infinitamente più utile in fase diagnostica.
Perché Processes mostra molta più RAM rispetto a File Summary?
In RAMMap le schede Processes e File Summary non misurano la stessa memoria.
La scheda Processes risponde alla domanda “quanta memoria usa ciascun processo per funzionare?”; la scheda File Summary risponde invece al quesito “quanta memoria è occupata da file mappati?” Sono due viste complementari, non sovrapponibili.
In Processes, RAMMap attribuisce a ogni processo tutta la memoria che contribuisce al suo funzionamento, includendo memoria privata del processo, heap e stack, memoria allocata dal runtime, porzioni di memoria condivisa che il processo utilizza. Gran parte di questa memoria non è associata ad alcun file su disco. Esiste solo in RAM (o nel file di paging) e quindi non può comparire nella scheda File Summary.
La scheda File Summary mostra esclusivamente la memoria fisica occupata da file mappati, cioè eseguibili, DLL, file di dati mappati, componenti del filesystem cache. Qui non esiste memoria privata, non esistono heap, stack o allocazioni dinamiche. Di conseguenza, i numeri sono inevitabilmente più bassi.

Nella scheda Processes, cliccando sull’intestazione Total, si possono porre i processi in ordine decrescente di occupazione RAM.
MemCompression, che svetta in cima alla lista, non è un processo “normale”: è un componente interno del kernel di Windows che rappresenta la memoria compressa mantenuta direttamente in RAM.
A partire da Windows 10, il sistema operativo preferisce comprimere le pagine di memoria poco usate invece di spostarle subito nel file di paging su disco. L’operazione permette di ridurre l’I/O su disco, mantenere più dati in RAM, migliorare la reattività complessiva del sistema. RAMMap mostra questa memoria compressa come se fosse “attribuita” a un processo speciale chiamato appunto MemCompression.
Quando e perché liberare la memoria con RAMMap
RAMMap include una serie di comandi Empty che permettono di liberare specifiche categorie di memoria. È fondamentale chiarire subito un punto: questi comandi non sono strumenti di ottimizzazione, ma interventi diagnostici e di emergenza, da usare con criterio.
I comandi Empty di RAMMap sono accessibili attraverso il menu omonimo dell’applicazione oppure invocabili (ne parliamo più avanti) anche da riga di comando. La sintassi utilizzabile è riportata nel menu Help, Usage.

Empty Standby List: il test più utile
Lo svuotamento della Standby List è l’intervento più noto e anche l’unico che, in determinate circostanze, ha un senso pratico immediato. Serve soprattutto come esperimento controllato. Se un sistema è lento o poco reattivo e, dopo aver svuotato la Standby Memory, torna immediatamente fluido, RAMMap non ha “risolto” il problema ma ha fornito una prova: la gestione della cache è coinvolta nel degrado delle prestazioni.
Il comando è utile una tantum, per confermare un sospetto o per ripristinare temporaneamente la reattività in situazioni particolari. Non va invece usato in modo automatico o ricorrente, perché costringe Windows a ricostruire la cache da zero, aumentando l’I/O e peggiorando le prestazioni nel medio periodo.
Ha senso programmare la pulizia della cache con RAMMap?
RAMMap può essere utilizzato anche attraverso l’interfaccia CLI (command-line interface) ovvero risponde a richieste inviate da riga di comando. Ad esempio, premendo Windows+R e poi digitando C:\RAMMap\RAMMap.exe -Et si può liberare “al volo” la cache (supponendo di aver estratto RAMMap nella cartella C:\RAMMap).
Svuotare la cache con RAMMap in modo automatizzato, specialmente ogni 10 minuti, ad esempio utilizzando Utilità pianificate, non ha alcun senso:
- Peggiora le prestazioni invece di migliorarle. Dopo lo svuotamento le applicazioni devono ricaricare dati da disco, aumenta l’I/O, peggiorano tempi di avvio e risposta.
- Maschera problemi reali. Se ogni 10 minuti sentiste il bisogno di svuotare la Standby List, molto probabilmente un’applicazione ha un comportamento anomalo, un driver gestisce male la cache, c’è un memory leak indiretto. In questi casi RAMMap serve per scoprire il colpevole, non per “pulire” a intervalli regolari.
- Windows sa già quando liberare la Standby Memory. Il Memory Manager di Windows libera automaticamente la Standby Memory quando serve, lo fa in modo più efficiente di qualsiasi script o task programmato.
- Può aumentare il paging (effetto opposto a quello desiderato). Svuotando la cache dati utili vengono rimossi, le applicazioni li richiederanno di nuovo, Windows potrebbe finire per usare più spesso il file di paging. Il risultato? Più accessi a disco e meno reattività.
Empty Modified Page List: solo in casi specifici
Il comando forza la scrittura su disco delle pagine modificate per renderle riutilizzabili. È un intervento più invasivo e va considerato solo quando la memoria Modified cresce in modo anomalo e persistente, tipicamente in presenza di colli di bottiglia I/O o applicazioni che producono grandi quantità di dati temporanei.
Usarlo senza una reale necessità può generare picchi di attività su disco e rallentamenti improvvisi. Ha senso come strumento di verifica o in situazioni di emergenza, non come pratica abituale.
Empty Working Sets: operazione raramente giustificata
Lo svuotamento dei working set dei processi forza Windows a rimuovere pagine attive dai processi in esecuzione. L’uso di questo comando ha un impatto diretto e immediato sulle applicazioni, che dovranno ricaricare dati e codice dalla memoria o dal disco.
In pratica, serve quasi esclusivamente per test avanzati o benchmarking. In un ambiente di produzione o su un sistema in uso quotidiano, è un intervento che peggiora le prestazioni e non risolve alcun problema strutturale.
Empty System Working Set: strumento diagnostico estremo
Il comando agisce sul working set del sistema operativo stesso. È un’operazione drastica, pensata per analisi molto specifiche o scenari di laboratorio. In contesti reali è quasi sempre inutile e potenzialmente destabilizzante.
Se senti il bisogno di usarlo, il problema non è la cache ma qualcosa di molto più profondo nel sistema.
Empty File Cache: casi particolari e mirati
Lo svuotamento della file cache può avere senso in scenari molto specifici, come test di prestazioni I/O o verifiche comparative. Anche in questo caso, non è una soluzione ma un mezzo per osservare il comportamento del sistema prima e dopo l’intervento.
La regola d’oro da ricordare
Ogni comando Empty in RAMMap risponde alla stessa logica: serve a dimostrare qualcosa, non a sistemare il problema.
Se a valle di un intervento Empty la situazione migliora temporaneamente, avete trovato un indizio prezioso. Se si fosse costretti a ripetere spesso l’operazione, si sta soltanto nascondendo il problema reale.
RAMMap va usato come strumento di diagnosi, non come manutentore automatico della memoria. In un periodo in cui la RAM è una risorsa sempre più costosa, capire perché viene occupata è molto più efficace che svuotarla a forza.