tengo saber recomendada para paginacion memoria gestion cuanta configurar como archivo 8gb 4gb 2gb c++ memory-management operating-system 32bit-64bit

c++ - saber - memoria virtual recomendada para 4gb ram



Aplicación con el indicador LARGEADDRESSAWARE configurado para obtener menos memoria virtual (2)

Después de navegar a través de MSDN, encontré lo siguiente:

En http://msdn.microsoft.com/en-us/library/windows/desktop/aa366770(v=vs.85).aspx (la página para MEMORYSTATUSEX que es utilizada por GlobalMemoryStatusEx ( http://msdn.microsoft. com / en-us / library / windows / desktop / aa366589 (v = vs.85) .aspx )) la descripción de ullTotalVirtual es:

este valor es de aproximadamente 2 GB para la mayoría de los procesos de 32 bits en un procesador x86 y aproximadamente 3 GB para los procesos de 32 bits que tienen una gran capacidad de administración ejecutándose en un sistema con la activación de 4 gigabytes habilitada.

La página de ajuste de 4GB es: http://msdn.microsoft.com/en-us/library/windows/desktop/bb613473(v=vs.85).aspx y dice algo así como:

En las ediciones de Windows de 64 bits, las aplicaciones de 32 bits marcadas con el indicador IMAGE_FILE_LARGE_ADDRESS_AWARE tienen 4 GB de espacio de direcciones disponible.

Ediciones Itanium de Windows Server 2003: antes del SP1, los procesos de 32 bits solo tenían 2 GB de espacio de direcciones disponible.

Además, la página de límites de memoria ( http://msdn.microsoft.com/en-us/library/aa366778.aspx#memory_limits ) puede ser útil si desea determinar la memoria total que admite su sistema.

Sin embargo, la información realmente útil proviene del blog de Mark Russinowich: http://blogs.technet.com/b/markrussinovich/archive/2008/07/21/3092070.aspx

Si bien 4 GB es el límite autorizado para SKU de clientes de 32 bits, el límite efectivo es en realidad menor y depende del chipset del sistema y de los dispositivos conectados. La razón es que el mapa de direcciones físicas incluye no solo RAM, sino también memoria del dispositivo, y los sistemas x86 y x64 asignan toda la memoria del dispositivo por debajo del límite de direcciones de 4GB para permanecer compatible con sistemas operativos de 32 bits que no saben cómo manejar direcciones de más de 4 GB.

Entonces, la conclusión es que sí, esto podría depender de la configuración del sistema. Tal vez pueda completar su pregunta con una tabla, con la cantidad de memoria que obtiene en cada sistema y algunas configuraciones importantes de configuración del sistema, y ​​es posible que descubramos un patrón en este caso.

Tengo una aplicación de 32 bits que consiste en un exe y múltiples dlls. El exe se ha creado con el indicador / LARGEADDRESSAWARE establecido. Así que espero que en un sistema operativo de 64 bits debería obtener 4 GB de espacio de direcciones de usuario. Pero en algunos sistemas Win 7 de 64 bits, obtengo solo 2 GB de espacio de direcciones de usuario. La memoria física es de 8 GB si eso es importante. ¿Cuál podría ser la razón de este comportamiento?


El problema es que una aplicación tiene que tener un conjunto que debe tener en cuenta las direcciones, por lo que los punteros deben tratarse como sin firma.

Sin embargo, si en "algunos" sistemas, algunos de los archivos DLL utilizados no son grandes, esto hace que su programa no tenga una gran dirección.

http://blogs.msdn.com/b/oldnewthing/archive/2010/09/22/10065933.aspx