473,478 Members | 2,028 Online
Bytes | Software Development & Data Engineering Community
Create Post

Home Posts Topics Members FAQ

Editbin /LARGEADDRESSAWARE

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.
Jan 9 '07 #1
8 22029
Hello,

So far, I didn't see any reported problem caused by "Editbin
/LARGEADDRESSAWARE" against an .NET assembly. It will indicate that the
assembly can handle addresses larger than 2 gigabytes and this is required
on a 64-bit system. Anyway, since your application will be deploy on both
32-bit and 64-bit system, there may be some potential issues. You need to
perform complete test on these two platform including the setup process.

Sincerely,

Luke Zhang

Microsoft Online Community Support
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscripti...ult.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscripti...t/default.aspx.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.

Jan 10 '07 #2
Luke Zhang [MSFT] wrote:
Hello,

So far, I didn't see any reported problem caused by "Editbin
/LARGEADDRESSAWARE" against an .NET assembly. It will indicate that the
assembly can handle addresses larger than 2 gigabytes and this is required
on a 64-bit system. Anyway, since your application will be deploy on both
32-bit and 64-bit system, there may be some potential issues. You need to
perform complete test on these two platform including the setup process.
Wow, this makes no sense. You are saying that a .NET 2.0 compiled
executable won't be able to access more than 2 GB of RAM on a 64-bit OS,
unless it's been tweaked with 'Editbin /LARGEADDRESSAWARE'???

My understanding is that out of the box .NET 2.0 compiled EXEs can
access 1TB of RAM (or some such ridiculous number) on a 64-bit OS.

But to be able to access 3GB on a 32-bit OS, you had to run the EXE
through 'Editbin /LARGEADDRESSAWARE'.

Is this not the case?
>
Sincerely,

Luke Zhang

Microsoft Online Community Support
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscripti...ult.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscripti...t/default.aspx.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
Jan 10 '07 #3
"Frank Rizzo" <no**@none.comwrote in message news:em**************@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.

Jan 10 '07 #4
Willy Denoyette [MVP] wrote:
"Frank Rizzo" <no**@none.comwrote in message
news:em**************@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.
Jan 10 '07 #5
One more unrelated question. When deploying a 32-bit LAA enabled EXE to
the 64-bit OS, does the machine need the /3GB flag in order to access
4GB of RAM?

Regards
Willy Denoyette [MVP] wrote:
"Frank Rizzo" <no**@none.comwrote in message
news:em**************@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.
Jan 10 '07 #6
"Frank Rizzo" <no**@none.comwrote in message
news:%2****************@TK2MSFTNGP06.phx.gbl...
One more unrelated question. When deploying a 32-bit LAA enabled EXE to the 64-bit OS,
does the machine need the /3GB flag in order to access 4GB of RAM?
Nope.

Willy.

Jan 10 '07 #7
"Frank Rizzo" <no**@none.comwrote in message news:uP*************@TK2MSFTNGP06.phx.gbl...
Willy Denoyette [MVP] wrote:
>"Frank Rizzo" <no**@none.comwrote in message
news:em**************@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.
If you never need more than 4GB, you better specify X86 as target. On a 32 bit OS you will
get up to 3GB while on 64 bit you'll get up to 4GB VAS.
2. So I need to make sure, that if customer has a 32-bit box, they can access more than
2GB of RAM.
This requires the/3GB boot.ini switch.
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.
Right, but if you memory requirements are < 3GB (as they are), so you don't need the address
extention feature of the 64bit platform (HW and OS) anyway.
That's why I said you better target x86, that way you are sure that both run the exact same
code (both use the JIT32), both have the same memory footprint, that is the same workingset,
virtual bytes, stack requirements etc. and both use the same framework code on both 32 and
64 bit.

Willy.


Jan 10 '07 #8
Willy Denoyette [MVP] wrote:
"Frank Rizzo" <no**@none.comwrote in message
news:uP*************@TK2MSFTNGP06.phx.gbl...
>Willy Denoyette [MVP] wrote:
>>"Frank Rizzo" <no**@none.comwrote in message
news:em**************@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.

If you never need more than 4GB, you better specify X86 as target. On a
32 bit OS you will get up to 3GB while on 64 bit you'll get up to 4GB VAS.
>2. So I need to make sure, that if customer has a 32-bit box, they can
access more than 2GB of RAM.
This requires the/3GB boot.ini switch.
>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.
Right, but if you memory requirements are < 3GB (as they are), so you
don't need the address extention feature of the 64bit platform (HW and
OS) anyway.
That's why I said you better target x86, that way you are sure that both
run the exact same code (both use the JIT32), both have the same memory
footprint, that is the same workingset, virtual bytes, stack
requirements etc. and both use the same framework code on both 32 and 64
bit.

Ah, understood. I couldn't grok previously why you were recommending a
specific flag. Now it makes sense.

Regards
Jan 10 '07 #9

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

11
23197
by: KalleD | last post by:
Hi, I need to use a lot of memory in an aplication. But I get OutOfMemoryException whenever I try to allocate more than around 1.2GB. Ex: byte c=new byte; My computer (win xp) have 4GB of RAM...
1
3574
by: Dave Booker | last post by:
I am using VS2003. How can I compile a (32-bit) C# project so that the program can use more than 2GB of memory space? I came across a /3G compile option searching on this subject, that is...
2
4299
by: Thomas Lykke Petersen | last post by:
The setup is a Windows 2003 Server (Standard) with the /4GT (/3GB) switch turned on which should enable ~3GB of memory for user processes and only ~1GB for windows processes. Is it possible to...
13
5432
by: fAnSKyer/C# newbie | last post by:
My system has 4GB memory and My program in C# is really memory consuming. and I noticed that when the memory I used is more than 2GB I will get an exception. How to solve this? thanks a lot
13
2792
by: Frank Rizzo | last post by:
I will soon be deploying an application on Windows 2003 R2 64-bit Standard Edition. The app will also be compiled for 64-bit. One of the reasons is that the application will really benefit from...
2
4906
by: Frank Rizzo | last post by:
Ok, it is easy enough to set a binary to be LARGEADDRESSAWARE. But how can I find out whether the binary has been set to LARGEADDRESSAWARE or not? Thanks.
4
5780
by: Daniel | last post by:
is there some per-process-limit on memory in .net processes? is there any way to increase it? i keep getting System.OutOfMemoryException when my box has 8 gigs of unused memory.
3
2353
by: powwow | last post by:
I am running out of memory (OutOfMemoryException) when I do something like this: Hashtable h = new Hashtable(10000000); It doesn't seem to use all of the RAM on the machine. I have 4GB of...
0
1155
by: Wily | last post by:
Hello, I'm using .net 3.5 and c#, I have a machine with 4GB and another one with 8GB, I run a little c# program and both seem to go up to 2GB and then crash withe a memory overflow, any idea how I...
0
7019
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
1
6719
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
6847
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
5312
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
1
4757
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
4463
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
2980
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
2970
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
1288
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.