I'm on a 64 bit Windows Server 2008 machine with 24 Gb of RAM. For a 32 bit app I would like to use the /LARGEADDRESSAWARE linker option. For this, if I'm not mistaken (and please correct me if I am) I would have set (in the past) the /3GB switch in the boot.ini file.

In Windows Server 2008 boot.ini has been superseded by the BCD store and the related BCDEDIT tool. As far as I know, calling bcdedit without any option (or with /v for verbose display) should show the current settings. Under the Windows Boot Loader section I find the following entries:

  • identifier
  • device
  • path
  • description
  • locale
  • inherit
  • osdevice
  • systemroot
  • resumeobject
  • nx

My question(s):

  • is my understanding correct? i.e. setting IncreaseUserVa meaningful in my use case?
  • what is the current value of IncreaseUserVa ? Since its entry is not shown, is it set to the default?
  • Assuming so, is the default value 2Gb ?

You do not need to configure the equivalent of /3GB while using a 64bit version of Windows.

A 64bit version of Windows will even assign a 4GB virtual address space instead of 3GB for 32bit applications compiled with /LARGEADDRESSAWARE flag according to Comparison of memory and CPU limits in the 32-bit and 64-bit versions of Windows in this article.

| improve this answer | |
  • Thanks @mprill, very useful. This resolves my problem without even using bcdedit. Do you know if the IncreaseUserVa is still meaningful in these versions of windows and how is it possible to check or set it? – Francesco Dec 18 '12 at 19:18
  • On 64bit systems that value is simply not set, you can manually set it but I doubt it will have any effect since the valid range is between 2048 and 3072MB according to msdn.microsoft.com/en-us/library/windows/hardware/… – mprill Dec 18 '12 at 20:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.