Willy Denoyette [MVP] wrote:
"Frank Rizzo" <none@none.comwrote in message
news:em6aVWENHHA.3552@TK2MSFTNGP03.phx.gbl...
>My .NET 2.0 app may be deployed on both 32-bit and 64-bit systems.
>Are there any side effects to running Editbin /LARGEADDRESSAWARE
>against the EXE and then deploying it on a 64-bit system?
>>
>The reason I ask is that there is just one setup and the .EXE will be
>converted to be LARGEADDRESSAWARE at setup creation time.
>>
>Thanks.
>
>
Question is - why do you 'flag' this application to be LARGEADDRESSAWARE?
Does the application really needs more than the default 2GB VAS?
What target platform (AnyCPU, x86, x64) did you specify while compiling?
Following illustrates the effect of the target platform and the LAA flag
on the VAS:
>
AnyCpu (default)
32 bit OS VAS = 2GB (default)
32 bit OS LAA VAS = 3GB
64 bit OS VAS = xTB (default)
x86
32 bit OS VAS = 2GB (default)
32 bit OS LAA VAS = 3GB
64 bit OS VAS = 2GB (default)
64 bit OS LAA VAS = 4GB
x64
64 bit OS VAS = xTB
>
LAA = LARGEADDRESSAWARE
x = 6 or 7 TB
>
It's clear that you need to know your specific VAS requirements before
you can decide to apply the LAA flag.
It's obvious that your application will need to restrict it's VAS
requirements to < 3GB, otherwise it won't run on 32Bit. However, if you
apply the LAA on an AnyCpu target, nothing stops it from consuming more
than 3GB on 64 bit, that's why I would never compile with the AnyCpu
flag if I have very specific memory requirements.
Willy, thank you for your reply. It's informative as always. In
answers to questions you posed:
1. Yes, the application does need more than 2GB of RAM for some of my
larger customers. Usually the application consumes 2.1-2.3GB at the
most. Typically, the customers have multi-proc boxes with around 6-8 GB
of RAM. However, some of these customers have 32-bit boxes, others have
64-bit. And I don't know who has what, so I need to cover all the
bases. Thus I specify AnyCPU.
2. So I need to make sure, that if customer has a 32-bit box, they can
access more than 2GB of RAM.
3. So I figured that if I marked an AnyCPU executable with LAA, then
I'll be covering all bases. If the user installed the app on a 32-bit
box, they would be able to use 3GB of RAM. If the app was installed on
the 64-bit box, they would use xTB of RAM.
Am I wrong?
Regards
>
Willy.
>