Puoi allocare MOLTO PIÙ memoria di ~ 2 GB costruendo l'applicazione in un'architettura a 64 bit, che richiede di creare un nuova configurazione di build in Visual Studio e quella build dell'applicazione verrà eseguita solo su versioni a 64 bit di Windows. In .NET, utilizzando l'opzione di compilazione "Qualsiasi CPU" predefinita per l'applicazione, trovo che sono in grado di allocare solo circa 1,5 GB di memoria dall'heap (anche sulla macchina Windows a 64 bit), perché l'applicazione in realtà funziona solo in modalità a 32 bit quando è costruito in modalità "Qualsiasi CPU". Ma compilando l'architettura x64, puoi allocare molta più memoria dall'heap durante l'esecuzione della tua applicazione, e ti spiegherò come creare una build x64 per la tua applicazione qui sotto:
Di nuovo, usando il normale (impostazione predefinita) Opzione di costruzione "Qualsiasi CPU" nel progetto .NET, l'applicazione verrà SEMPRE eseguita in modalità a 32 bit, anche su un sistema operativo Windows a 64 bit. Pertanto non sarà possibile allocare più di 1,5 a 2 GB di memoria RAM durante l'esecuzione dell'applicazione. Per eseguire l'applicazione .NET in modalità a 64 bit, è necessario accedere al gestore configurazione build e creare un tipo di build per l'architettura x64, quindi ricompilare esplicitamente il programma per x64 utilizzando tale tipo di build. L'opzione della modalità x64 build può essere creato per la soluzione .NET utilizzando le seguenti operazioni:
- in Visual Studio "Solution Explorer" riquadro, fate clic destro sull'icona di soluzione e scegliere l'opzione "Configuration Manager" da il menu a comparsa. Si aprirà la finestra di dialogo di configurazione "Configuration Manager" per il file .NET Solution.
- Nella parte destra della finestra di dialogo "Configuration Manager" di build, fare clic sulla freccia giù e selezionare l'opzione "& ltnew & gt". Questo aprirà la finestra di dialogo "Nuova piattaforma di soluzione".
- Nella finestra di dialogo "Nuova piattaforma di soluzione", per l'opzione "Piattaforma", selezionare "x64" dal menu a discesa. Quindi fare clic sul pulsante "OK" e la nuova opzione di costruzione x64 sarà ora disponibile nella finestra di dialogo Gestore configurazione.
- Quindi, nella finestra di dialogo "Configuration Manager", selezionare "x64" nel menu a discesa "Piattaforma di soluzioni attive". Fare clic sul pulsante "Chiudi".
- Nel riquadro "Esplora soluzioni" di Visual Studio, fare clic con il pulsante destro sull'icona Progetto CS e scegliere l'opzione "Proprietà" dal menu a comparsa (l'ultima opzione in fondo a questo menu). Questo aprirà la finestra delle proprietà del progetto CS.
- Sul lato sinistro della finestra delle proprietà del progetto CS, fare clic sulla scheda "Crea" per mostrare le proprietà di costruzione per il progetto di codice. Nella parte superiore di questa finestra, si noti che la "Piattaforma" dovrebbe ora dire "x64" (in contrasto con l'opzione predefinita "Qualsiasi CPU"). Se il menu a discesa "Piattaforma" non mostra "x64", dovresti selezionarlo ora.
- Quindi crea il tuo codice e nella cartella "bin", dovresti ora avere una cartella x64 con il nuovo build a 64 bit della tua applicazione al suo interno.
Utilizzando un 64-bit di compilazione della vostra applicazione su un 64-bit di Windows OS permetterà il vostro programma di destinare molto di più di ~ 2GB di memoria, presumibilmente fino a 2^64 spazi di indirizzi (se avete la RAM e spazio su disco disponibili, che sono i veri fattori limitanti al momento di scrivere questa risposta).
Se si sta ancora esaurendo la memoria nell'applicazione, è anche possibile aumentare le dimensioni del file di memoria di Windows. Su Windows, il file di paging consente al sistema operativo di spostare la memoria dalla RAM al disco, se esaurisce lo spazio di memoria RAM. Tuttavia, il trasferimento di sezioni di memoria RAM su e dal disco può comportare un notevole risparmio di tempo, pertanto potrebbe essere un vero colpo alle prestazioni della tua applicazione. Indipendentemente dalle prestazioni, aumentando le dimensioni della pagina, è possibile (in teoria) rendere il file di pagina tanto grande quanto lo spazio disponibile sull'unità C: del computer Windows. In tal caso, l'applicazione sarà in grado di allocare, ad esempio, fino a 4 TB di memoria (o qualsiasi quantità di memoria a cui è impostata la dimensione del file di pagina) durante l'esecuzione del programma. Per modificare le impostazioni del file di paging per la vostra macchina Windows, effettuare le seguenti operazioni:
- Aprire la finestra di dialogo "Proprietà di sistema" facendo clic destro su "Questo PC" e scegliendo l'opzione "Proprietà" dal menu a comparsa. Questo può essere fatto anche nelle versioni successive di Windows (Windows 10, Win 2012 Server, ecc ...) andando su "Start" & gt "Pannello di controllo" & gt "Sistema e sicurezza" & gt "Sistema".
- Sul lato sinistro della finestra di dialogo "Sistema", fare clic sull'opzione "Proprietà di sistema avanzate". Questo mostrerà la scheda "Avanzate" della legacy "Proprietà del sistema" per Windows.
- Nella scheda "Avanzate" della finestra di dialogo "Proprietà del sistema", fare clic sul pulsante "Impostazioni" nella casella "Prestazioni". Si aprirà la finestra di dialogo "Opzioni di prestazione".
- Nella finestra di dialogo "Opzioni prestazioni", fare clic sulla scheda "Avanzate" per visualizzare le impostazioni della dimensione corrente per il file di pagine di memoria di Windows.
- Per aumentare la dimensione del file di pagina, fare clic sul pulsante "Cambia" per aprire la finestra di dialogo "Memoria virtuale".
- Nella finestra di dialogo "Memoria virtuale", selezionare l'unità "C:", quindi in "Dimensioni personalizzate", impostare le dimensioni "Iniziale" e "Massimo". È possibile utilizzare qualsiasi dimensione fino alla quantità massima di spazio libero sull'unità C: ma questa modifica riserva lo spazio per il file di paging sul disco rigido.
- Quindi fare clic su "OK" in tutte le finestre di dialogo per confermare le nuove impostazioni. Quindi riavviare il computer per assicurarsi che tutte le modifiche siano state completate correttamente e che le nuove impostazioni del file di paging siano operative.
Comunque, spero che questo aiuta le persone a capire il motivo per cui si può incorrere in questo 1,5-2 GB questione della prescrizione di memoria in un'applicazione .NET, anche se in esecuzione su una macchina Windows a 64 bit. Questo può essere un problema molto confuso per le persone e spero che la mia spiegazione abbia un senso. Sentitevi liberi di inviarmi messaggi con domande su questa risposta, se necessario.
Grazie, mi dà un'idea. Tuttavia, i collegamenti non sono davvero utili. –
Solo il CLR del server utilizza la configurazione memoryLimit. La workstation CLR utilizza sempre la quantità di memoria che può ottenere. – ezolotko
@ ezolotko - Non ero mai consapevole che ci fosse una differenza. – MyItchyChin