Ivan
Mon May 09 12:22:42 CDT 2005
Each process has a technical upper limit,
given by the architecture and the OS design.
For current Windows implementations, x86 we have:
- 2Gig, x86
- 3Gig, x86 with /3G AND /LARGEADDRESSAWARE
- 4Gig, x86 under wow64 AND /LARGEADDRESSAWARE.
The upper limit, together with the runtime utilization,
leads to the limit of the largest free contiguous block of address spaces.
Then, there is the limit of the used address space,
that can be cap-ed by a job-object.
cdb/ntsd/windbg can be downloaded from
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
After you've gotten a failure from malloc/HeapAlloc/VirtualAlloc,
issue `!address`, and check the largest region size,
so see which size would have suceeded.
--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of any included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm
"Montblanc" <Montblanc@discussions.microsoft.com> wrote in message
news:BEA5589C-955B-4B15-8288-A2954219FEDE@microsoft.com...
> Do you think there is no limit for the Memeory to allocate?
> I don't understand where to find this debugger extension!
> Sorry!
>
> "Ivan Brugiolo [MSFT]" wrote:
>
> > On top of what others have said about address space fragmentation,
> > an, as a more friendly alternative to what Jochen Kalmbach suggested,
> > you can try the `!address` debugger extension command in
cdb/ntsd/windbg.
> > It will give you address space statistics and the address and size of
> > the largest contiguous address range.
> > BTW, all of this assumes there is no Job-Object limit that caps the used
> > address
> > space of your process.
> >
> > --
> > This posting is provided "AS IS" with no warranties, and confers no
rights.
> > Use of any included script samples are subject to the terms specified at
> >
http://www.microsoft.com/info/cpyright.htm
> >
> >
> > "Montblanc" <Montblanc@discussions.microsoft.com> wrote in message
> > news:919E0ED9-4AD9-468C-9F0E-32EB1739B11A@microsoft.com...
> > > I'm not able to allocate more than 900MB with GlobalAlloc or HeapAlloc
> > > (VC++ 6.0, Win2K or WinXP). Even if I try to allocate 450MB twice it
> > fails.
> > > It seems the limit is about 850 MB even if the PC has 2GB RAM.
> >
> >
> >