Qual è la memoria massima che il garbage collector può allocare per un processo .NET? Quando compilo a x64, Process.GetCurrentProcess.MaxWorkingSet restituisce circa 1,4 GB, ma quando compilo a AnyCPU (x64) viene restituito lo stesso numero. Per x64 dovrebbe essere più simile al valore "Limite" che viene visualizzato nel Task Manager. Come posso ottenere il numero corretto che causerà OutOfMemory-Exceptions quando viene superato in tutti i casi?Memoria massima che può essere allocata da un processo .NET
Alcuni esempi ciò che il metodo deve restituire:
1) Configurazione della Macchina: x 64 di Windows, 4GB di memoria fisica, file di paging 4 GB
-Come processo a 64 bit: 8 GB
-Come processo a 32 bit : 1.4GB
2) Configurazione della macchina: x 64 di Windows, 1 GB di memoria fisica, file di paging 2GB
-Come processo a 64 bit: 3GB
-Come processo a 32 bit: 1.4GB
3) Configurazione della Macchina: x32 Windows, 4GB di memoria fisica, file di paging 4 GB
-Come processo a 64 bit: Non accadrà
-Come processo a 32 bit: 1.4GB
4) Configurazione della Macchina: x32 con Windows, 512 MB di memoria fisica, file di pagina 512
-Come processo a 64 bit: non accadrà
-Come processo a 32 bit: 1.0GB
Ecco un post interessante che parla di massimi teorici e intervalli in cui un processo .NET inizierà a vedere le eccezioni di memoria: http://blogs.msdn.com/b/ tom/archive/2008/04/10/chat-question-memory-limits-per-32-bit-and-64-bit-processes.aspx –