Soy miembro de un equipo que desarrolla una aplicación Delphi. Los requisitos de memoria son enormes. 500 MB es normal, pero en algunos casos salió de la excepción de memoria. La memoria asignada en esos casos es típicamente entre 1000 - 1700 MB.¿Por qué 2 GB de límite de memoria cuando se ejecuta en Windows de 64 bits?
Por supuesto, queremos un compilador de 64 bits, pero eso no sucederá ahora (y si sucede, también debemos convertirlo a unicode, pero esa es otra historia ...).
Mi pregunta es por qué hay un límite de memoria de 2 GB por proceso cuando se ejecuta en un entorno de 64 bits. El puntero es de 32 bits, así que creo que 4 GB sería el límite correcto. utilizo Delphi 2007.
EDIT: Así que si me puse la bandera IMAGE_FILE_LARGE_ADDRESS_AWARE en Delphi usando:
{$SetPeFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
y ejecutar el archivo EXE resultante en un Windows Server 2003 x64 entonces la aplicación puede abordar 4 GB?
- ¿Debo configurar/3GB cambiar en boot.ini?
- Hemos intentado esto pero en un Windows Server 2003 de 32 bits y parece limitar los recursos de Windows. Hubo más excepciones para "Sin memoria" con GDIError en el registro. Pero tal vez esto desaparezca cuando se ejecuta en un sistema operativo de 64 bits?
El interruptor de 3 GB en el arranque.ini es solo para Windows de 32 bits, y se requiere para que LARGEADDRESSAWARE funcione. Tenga en cuenta que reduce el espacio disponible para Windows en sistemas de 32 bits. Vea el ejemplo anterior aquí, http://blogs.technet.com/markrussinovich/archive/2009/03/26/3211216.aspx, o lea los excelentes internos de Windwos por Russinovoch y Solomon. –