utilizar utilizable toda tener reconoce que memoria mejorar hacer con como aumentar ampliar 2gb windows process x86 64bit

utilizable - ¿Puede un proceso de 32 bits acceder a más memoria en un sistema operativo Windows de 64 bits?



memoria ram utilizable windows 7 64 bits (4)

Por lo que entiendo, un proceso de 32 bits solo puede acceder a 2 GB de memoria en las ventanas de 32 bits sin el conmutador / 3GB, y parte de esa memoria es asumida por el sistema operativo por sus propias razones diabólicas. Esto parece encajar con mis experiencias, ya que tenemos una aplicación que se cuelga cuando alcanza alrededor de 1.2 a 1.5 GB de RAM sin excepciones de memoria, aunque todavía hay mucha memoria disponible.

Mi pregunta es, ¿movería esta aplicación de 32 bits a las ventanas de 64 bits le permitiría acceder a más de 1,5 GB de memoria que ahora puede? ¿O la aplicación en sí misma debe actualizarse a 64 bits?


Sí, en las circunstancias adecuadas, un proceso de 32 bits en Windows puede acceder a una memoria de 4 GB completa, en lugar de a los 2 GB a los que normalmente está limitado.

Para que esto funcione, necesitas lo siguiente:

  • La aplicación debe ejecutarse en un sistema operativo de 64 bits
  • La aplicación debe compilarse con el indicador / LARGEADDRESSAWARE.
  • La aplicación debe probarse para asegurarse de que realmente funciona correctamente en este caso. ;) (específicamente, el código que se basa en todos los punteros que apuntan a direcciones debajo del límite de 2GB obviamente no funcionará aquí)

Su aplicación estará limitada por el tamaño del puntero, en su ejemplo de 32 bits.

Si su aplicación fuera para acceder a más memoria, entonces necesitaría algún tipo de arquitectura de memoria segmentada como la que teníamos en los días de 16 bits donde las aplicaciones usaban punteros de 16 bits y compensaciones para acceder al espacio de memoria completo de 32 bits.


WOW64 permite usar aplicaciones de Windows de 32 bits en Windows de 64 bits, traduciendo punteros de 32 bits a punteros reales de 64 bits. Y, en realidad, el direccionamiento de 32 bits debería permitir el acceso a 4 GB de memoria.


Las versiones más nuevas de Visual Studio tienen una nueva bandera que hace que las aplicaciones de 32 bits "conozcan el gran espacio de direcciones". Básicamente, lo que hace es decir que si se carga en una versión de Windows de 64 bits, obtendrá 4 GB (el límite de punteros de 32 bits). Esto es ciertamente mejor que los 2 o 3 GB que obtiene en las versiones de 32 bits de Windows. Ver http://msdn.microsoft.com/en-us/library/aa366778.aspx :

En particular, dice:

Los límites en la memoria y el espacio de direcciones varían según la plataforma, el sistema operativo y si el valor IMAGE_FILE_LARGE_ADDRESS_AWARE de la estructura LOADED_IMAGE y el ajuste de 4 gigabytes (4GT) están en uso. IMAGE_FILE_LARGE_ADDRESS_AWARE se establece o borra utilizando la opción del enlazador / LARGEADDRESSAWARE.

También vea: http://msdn.microsoft.com/en-us/library/wz223b1z.aspx