Sono un membro di un team che sviluppa un'applicazione Delphi. I requisiti di memoria sono enormi. 500 MB è normale, ma in alcuni casi ha esaurito l'eccezione di memoria. La memoria allocata in questi casi è in genere compresa tra 1000 e 1700 MB.Perché limitare la memoria di 2 GB durante l'esecuzione in Windows a 64 bit?
Ovviamente vogliamo un compilatore a 64 bit, ma ciò non accadrà ora (e se dovesse succedere, dobbiamo anche convertire in unicode, ma questa è un'altra storia ...).
La mia domanda è perché c'è un limite di memoria di 2 GB per processo quando si esegue in un ambiente a 64 bit. Il puntatore è a 32 bit, quindi penso che 4 GB sarebbero il limite giusto. Io uso Delphi 2007.
EDIT: Quindi, se ho impostato il flag IMAGE_FILE_LARGE_ADDRESS_AWARE a Delfi utilizzando:
{$SetPeFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
ed eseguendo il file EXE risultante su un Server 2003 x64 di Windows quindi l'applicazione può indirizzare 4 GB?
- Devo impostare/interruttore 3GB in boot.ini?
- Abbiamo provato questo, ma su un server Windows Server 2003 a 32 bit e sembra limitare le risorse di Windows. C'erano più eccezioni per "Memoria insufficiente" con GDIError nel registro. Ma forse questo scompare quando si esegue in un sistema operativo a 64 bit?
L'interruttore da 3 GB in avvio.ini è solo per Windows a 32 bit ed è necessario che LARGEADDRESSAWARE funzioni. Attenzione, riduce lo spazio disponibile su Windows stesso su sistemi a 32 bit. Vedi esempio qui, http://blogs.technet.com/markrussinovich/archive/2009/03/26/3211216.aspx, o leggi gli eccellenti Windwos Internals di Russinovoch e Solomon. –