2011-07-25 11 views
6

Estoy ejecutando un programa que crea un objeto muy grande, y me beneficiaría enormemente al asignar más de 2 GB de memoria a este proceso. Gracias por adelantado.¿Cómo puedo asignar más de 2GB de memoria a un proceso en Windows?

+0

pesar de que puede hacer que su programa sea más fácil de escribir, la asignación de 2GB + trozos de la memoria sin duda dará lugar a una aplicación más pobre para su usuario. – JaredPar

+0

¿Cómo construyes un objeto de 2GB? – Gabe

+0

@gabe una matriz es el ejemplo más obvio –

Respuesta

3

Parece que hace referencia al límite de 2gb en la memoria virtual en Windows de 32 bits. No puede superar este límite en un sistema de 32 bits.

+0

Puede usar el modificador/3gb en la configuración de boot.ini y marcar el proceso "Large address space aware" ... pero tratar de cargar 2GB en memoria en el sistema operativo de 32 bits no es fácil tarea para el código nativo o administrado. –

+2

@alexei El administrador de la máquina puede hacer/3gb pero una aplicación no puede –

6

No se puede asignar un solo objeto (o una matriz) que sea mayor que 2 GB, esto es una limitación de CLR. Tendrás que dividir el objeto en pedazos.

+0

así que supongo que tengo un objeto de 3GB que dividí en 6 objetos de 0.5GB, ¿no superaría el límite de proceso de 2GB? Gracias de nuevo. – abw333

+0

Y, TBH, si está tratando de administrar un objeto de este tamaño, debe reconsiderarlo. –

+0

@Schroedingers Cat Es perfectamente razonable querer asignar objetos grandes para algunos algoritmos. –

5

.NET Framework 4.5 permite crear matrices de más de 2 GB en plataformas de 64 bits. Esta característica no está activada por defecto, tiene que estar habilitada a través del archivo config usando el elemento gcAllowVeryLargeObjects.

http://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx

+0

¿Es esa la única manera? Realmente no quiero cambiar a VS2012 si no es necesario. –

Cuestiones relacionadas