2GB memory limit

Y

Yahya

Dear Sirs,

I have developed a VB .Net windows application, but unfortunately when I
this application tries to use more than 2GB memory it fails although there
is available 4GB of memory on the machine. How may I allocate more virtual
memory to be used by the application or extend this limit?

Regards,
Yahya
 
D

David Browne

Yahya said:
Dear Sirs,

I have developed a VB .Net windows application, but unfortunately when
I
this application tries to use more than 2GB memory it fails although there
is available 4GB of memory on the machine. How may I allocate more virtual
memory to be used by the application or extend this limit?

The amount of RAM on the machine is irrelevant. Your application uses
virtual memory which is paged from disk to RAM by the OS.

On 32-bit windows you have a 4gig virtual address space which divided into
2gigs for user-mode code, and 2gigs for kernel-mode code. So your
application (which runs in user-mode) can only access the bottom 2gigs of
the address space.

On 64bit windows, native 64-bit apps (which you can't write with .NET 1.1)
have a very large address space. 32-bit apps running on 64bit windows in the
Windows On Windows64 environment still have a 4gig address space, but since
all no kernel-mode code can run in 32-bit mode, you can use the whole 4gig
address space.

But seriously, why are you using so much memory?

David
 
J

Jay B. Harlow [MVP - Outlook]

Yahya,
In addition to David's comments.

..NET 2.0 (VS.NET 2005, aka Whidbey, due out later in 2005) supports both a
32-bit CLR & a 64-bit CLR.

http://lab.msdn.microsoft.com/vs2005/

I don't know what the memory limit on the 64-bit CLR is going to be, however
I would expect it to be significantly more then either 2GB or 4GB.

Of course the 2.0 64-bit CLR will require a 64-bit version of the OS (XP Pro
or 2003) as well as a 64-bit CPU.

Hope this helps
Jay


| Dear Sirs,
|
| I have developed a VB .Net windows application, but unfortunately when
I
| this application tries to use more than 2GB memory it fails although there
| is available 4GB of memory on the machine. How may I allocate more virtual
| memory to be used by the application or extend this limit?
|
| Regards,
| Yahya
|
|
 
Y

Yahya

I am using such a large amount or memory since this application is copying
large mail items between public folders on a machine which is also running
exchange 2003 that is taking alone the minimum of 1GB.

But I still didn't understand how can I make use of the whole 4GB of memory.

Thank you,
Yahya
 
S

Sean Hederman

Yahya said:
I am using such a large amount or memory since this application is copying
large mail items between public folders on a machine which is also running
exchange 2003 that is taking alone the minimum of 1GB.

How exactly is this copying being done? Can you not chunk the copy?
But I still didn't understand how can I make use of the whole 4GB of
memory.

You can't. To paraphrase David this would only be available on a 64-bit
machine running a 64-bit version of Windows and .NET 2.0, which has not yet
been released. The limit for standard Win32 applications is 2GB.
 
J

Jay B. Harlow [MVP - Outlook]

Yahya,
| But I still didn't understand how can I make use of the whole 4GB of
memory.

As David, Sean, and I have stated you cannot per se until .NET 2.0 64-Bit
edition.

Depending on which server you are running, you can enable .NET 1.1 to use
3GB if your server OS supports it. For details start with "/3GB switch" at:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt17.asp

| I am using such a large amount or memory since this application is copying
| large mail items between public folders on a machine which is also running
| exchange 2003 that is taking alone the minimum of 1GB.
I would review the algorithm I was using to copy the data to see if there
was one that did not require such high memory requirements. Such as reading
& writing 1M chunks at a time.

Hope this helps
Jay


|I am using such a large amount or memory since this application is copying
| large mail items between public folders on a machine which is also running
| exchange 2003 that is taking alone the minimum of 1GB.
|
| But I still didn't understand how can I make use of the whole 4GB of
memory.
|
| Thank you,
| Yahya
|
| message | > | > > Dear Sirs,
| > >
| > > I have developed a VB .Net windows application, but unfortunately
| when
| > > I
| > > this application tries to use more than 2GB memory it fails although
| there
| > > is available 4GB of memory on the machine. How may I allocate more
| virtual
| > > memory to be used by the application or extend this limit?
| > >
| >
| > The amount of RAM on the machine is irrelevant. Your application uses
| > virtual memory which is paged from disk to RAM by the OS.
| >
| > On 32-bit windows you have a 4gig virtual address space which divided
into
| > 2gigs for user-mode code, and 2gigs for kernel-mode code. So your
| > application (which runs in user-mode) can only access the bottom 2gigs
of
| > the address space.
| >
| > On 64bit windows, native 64-bit apps (which you can't write with .NET
1.1)
| > have a very large address space. 32-bit apps running on 64bit windows in
| the
| > Windows On Windows64 environment still have a 4gig address space, but
| since
| > all no kernel-mode code can run in 32-bit mode, you can use the whole
4gig
| > address space.
| >
| > But seriously, why are you using so much memory?
| >
| > David
| >
| >
|
|
 
D

Danny T

Jay said:
Depending on which server you are running, you can enable .NET 1.1 to use
3GB if your server OS supports it. For details start with "/3GB switch" at:

LOL!!

Why isn't there a /4GB switch too? :)
 
C

Chris Lyon [MSFT]

The /3GB switch enables user apps to address 3GB of Virtual Memory, not use
3GB of Physical Memory. Since 32-bit machines can access a maximum of 4GB
of addresses, normally Windows allots 2GB for user processes and 2GB for
kernel processes. With /3GB mode, applications marked /LARGEMEMORYAWARE
can access 3GB worth of addresses.

Raymond Chen explains this well:
http://blogs.msdn.com/oldnewthing/search.aspx?q=3gb&p=1

As was stated above, 64-bit processes don't have this restriction.

-Chris

--------------------
|
| Jay B. Harlow [MVP - Outlook] wrote:
|
| > Depending on which server you are running, you can enable .NET 1.1 to
use
| > 3GB if your server OS supports it. For details start with "/3GB switch"
at:
|
| LOL!!
|
| Why isn't there a /4GB switch too? :)
|
| --
| Danny
|
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top