Willy Denoyette said:
Not really, on 64 bit Windows the "system portion" is no longer mapped
into the process virtual address space, that means that a 32 bit process
enjoys a full 2^32 (4GB) users address space. To take advantage of this
you'll have to set the LARGEADDRESSAWARE bit in the X86 PE header file.
For C# and VB.NET this means compiling with /platform:x86 and run editbin
/LARGEADDRESSAWARE on the executable file
Sure. And on some versions of the 32 bit windows, you can also give 3GB
virtual address space if you boot with /3GB when the LARGEADDRESSAWARE bit
is set in the executable. But to me that can be just a "trick" and
depending on the application may or may not be the appropriate thing to do.
For a high transaction volume server apps (exchange, msmq, sql, etc), sure,
being able to address that extra gig or 2 increases app performance. But if
the problem is because you're trying to read an mpeg file thats 5 GB long
into memory all at once, well, that's a different story and should be
addressed at the design level...
Note that, despite the larger users address space available to 32 bit
processes on 64 bit Windows, that the largest CLR object is still limited
to ~2GB, allocating larger objects will throw OOM's even when running MSIL
or X64 code on 64bit Windows.
However I've always wondered the purpose of the Array.LongLength property
with respect to that limitation <g>
--
Doug Semler, MCPD
a.a. #705, BAAWA. EAC Guardian of the Horn of the IPU (pbuhh).
The answer is 42; DNRC o-
Gur Hfrarg unf orpbzr fb shyy bs penc gurfr qnlf, abbar rira
erpbtavmrf fvzcyr guvatf yvxr ebg13 nalzber. Fnq, vfa'g vg?