Come aumentare il limite di 2 GB di memoria delle applicazioni a 32-bit (x86) nelle versioni di Windows a 64-bit (x64)

Se vi siete imbattuti in questo articolo è molto probabile che vi siate imbattuti in una classica problematica che incontrano molti power-user e amministratori di sistema lavorando con sistemi Windows a 64 bit di qualsivoglia tipo (Windows 2008 Server, Windows 2012 Server, Windows 7, Windows 10 e così via) e vecchi applicativi o eseguibili a 32-bit (x86): la cronica mancanza di memoria utilizzabile da questi ultimi, che si traduce in errori come il seguente:

Memoria insufficiente

La cosa più frustrante è che l’errore in questione si verifica anche quando il sistema è dotato di un grande quantitativo di memoria RAM libera, cosa che induce molti a pensare che il problema sia di tutt’altro avviso. La verità, come spesso accade, sta nel mezzo: pur trattandosi senza dubbio di un problema di memoria, le cause non sono da ricercare nella mancanza di RAM libera nel sistema quanto piuttosto nelle modalità di funzionamento dei processi a 32-bit all’interno del sistema operativo Windows: a prescindere dalla memoria globale, nessun processo a 32-bit ha la possibilità di utilizzare più di 2 Gigabytes di memoria complessiva. Le ragioni legate a questa problematica, ben documentate in questa pagina di Wikipedia (e relativi riferimenti), sono strettamente legate all’architettura x86 e, se il sistema è a 32-bit, possono essere aggirate soltanto con dei workaround che prevedano modalità di memory-paging (PAE) da implementare all’interno dell’applicazione stessa.

Fortunatamente, se la macchina dove vogliamo eseguire l’applicativo è dotata di un sistema operativo a 64 bit, abbiamo la possibilità di aggirare questo “tetto” in almeno due modi:

 

  • Recuperando la versione a 64-bit dell’applicazione in questione, oppure – se sviluppata da noi – compilandola in modalità x64 nativa, ovvero per l’esecuzione su processori a 64-bit.
  • Applicare una apposita patch all’eseguibile x86 che imposti a TRUE il flag large address aware, il quale consente di estendere il “tetto” da 2GB a 4GB di RAM.

Il primo approccio tra quelli indicati è senza ombra di dubbio preferibile, sempre che sia possibile portarlo a compimento: tuttavia, se vi siete imbattuti in questo articolo, è molto probabile che non sia il vostro caso. Magari avete a che fare con un eseguibile vecchio o non più supportato dall’autore, oppure i sorgenti non sono più disponibili… in tutti questi casi, l’unica strada possibile è quella della patch.

Se le cose stanno così, potete risolvere – o quantomeno mitigare – il vostro problema utilizzando una delle tante applicazioni freeware che consentono di impostare il flag large address aware: una delle più diffuse e semplici da utilizzare è il 4GB Patch tool, sviluppato da Daniel Pistelli.

Per utilizzare il tool, seguite questi passaggi:

  • Prima di tutto, effettuate un backup dell’eseguibile che avete intenzione di patchare: a onor del vero il tool crea una copia di ogni file su cui tenta di effettuare la patch, ma non si sa mai…
  • Scaricate l’ultima versione di 4GB Patch dal sito NT Core, che è anche la pagina ufficiale dell’autore.
  • Scompattate l’archivio ed eseguite il contenuto: apparirà una finestra pop-up che vi chiederà di selezionare l’eseguibile da patchare.
  • Navigate nel vostro HDD fino a trovare il file EXE in questione: selezionatelo, premete OK e il gioco è fatto.

Se avete seguito correttamente la procedura, il vostro eseguibile dovrebbe essere in grado di utilizzare fino a 4GB di ram in luogo dei 2GB precedenti.

Per il momento è tutto: buona patch!

 

RELATED POSTS

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane.

View all posts by Ryan