Just set the switch (with editbin) and try it and back it out if there are any problems (and let us know). Run the binary with no args for help (better than that copied below!) Cheers Ben EDITBIN Options
Home <javascript:hhobj_1.Click()> | <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/_core_overviews.3a_.compiling_and_linking.htm> Overviews An option consists of an option specifier, which is either a dash ( - ) or a forward slash ( / ), followed by the name of the option. Option names cannot be abbreviated. Some options take arguments, specified after a colon ( : ). No spaces or tabs are allowed within an option specification. Use one or more spaces or tabs to separate option specifications on the command line. Option names and their keyword or filename arguments are not case sensitive. EDITBIN has the following options: * /BIND <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/_core_.2f.bind.htm> * /HEAP <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/_core_.2f.heap_editbin.htm> * <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/vcreflargeaddress_editbin.htm> /LARGEADDRESSAWARE * /NOLOGO <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/_core_.2f.nologo_editbin.htm> * /REBASE <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/_core_.2f.rebase.htm> * /RELEASE <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/_core_.2f.release_editbin.htm> * /SECTION <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/_core_.2f.section_editbin.htm> * /STACK <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/_core_.2f.stack_editbin.htm> * /SUBSYSTEM <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/vcrefsubsystem_editbin.htm> * /SWAPRUN <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/vcrefswaprun_editbin.htm> * /VERSION <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/vcrefversion_editbin.htm> * /WS <mk:@MSITStore:d:\Apps\Dev\MS-VisualStudio6Pro\Msdn98\98VSa\1033\vccore.chm: :/html/vcrefws_editbin.htm> _____ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Lyle Taylor Sent: November 19, 2009 8:39 PM To: arslist@ARSLIST.ORG Subject: Re: JVM output -- only sees 2GB - but machine has 4GB? ** No problem. I agree with you that it seems senseless to have at this point. I also think the way memory is partitioned like this by the OS is a bit odd. I'm not sure Linux or other similar OSes have this "problem". Perhaps it's due to old hardware limitations with older x86 processors, and the architectural issues those created in the OS haven't been completely removed for some reason. So, going back to the JVM issue, even with the /3gb switch, I'm not sure the JVM will ever be able to access more than 2GB of virtual memory. We have 8 or 16 GB of physical memory on our machines, and the JVM (and AR Server) has always topped out at 2GB per process. Lyle From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Ben Chernys Sent: Thursday, November 19, 2009 12:22 PM To: arslist@ARSLIST.ORG Subject: Re: JVM output -- only sees 2GB - but machine has 4GB? ** I apologise. You are correct. It is a linker switch (which makes sense as the linker builds the program header) and can be set on any binary with a small utility - "editbin". It is interesting that Windows should have its link images have that at all as the compilers need no special code. There are certainly no throwbacks to the old 24bit addressing where a load address preserved the top 8 bits of a word so I would be curious why it was implemented and why it would not be the default. As for the utility, it comes with all versions of the MS c compiler since VC 6. It may be that some newer versions of VC have it as the default for I can see no use in a 32 bit machine or OS for such a switch. You have me curious now. Perhaps I'll do some more research into what it may do other than alerting Windows that an image can request or use a "lot" of memory. I remember a bunch of switches in the 16 bit compilers when the PC first came out and then transitioned to a 32 bit machine. Cheers Ben _____ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Lyle Taylor Sent: November 19, 2009 7:23 PM To: arslist@ARSLIST.ORG Subject: Re: JVM output -- only sees 2GB - but machine has 4GB? ** Ben, perhaps I misinterpreted the article that Axton posted (http://msdn.microsoft.com/en-us/library/aa366912%28VS.85%29.aspx). In that article, it says the following: After 4GT is enabled, a process that has the <http://msdn.microsoft.com/en-us/library/ms680349(VS.85).aspx> IMAGE_FILE_LARGE_ADDRESS_AWARE flag set in its image header will have access to the additional 1 GB of memory above the low 2 GB. That seems to indicate that something is different about the process, or that something specific has to be done in order for the process to be able to access the extra gig of memory (beyond configuring the OS with the /3gb switch). I figured that was probably a compile-time option, but I accept that I could be wrong. Do you know how that flag gets set for a process in its image header? Thanks, Lyle From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Ben Chernys Sent: Thursday, November 19, 2009 3:23 AM To: arslist@ARSLIST.ORG Subject: Re: JVM output -- only sees 2GB - but machine has 4GB? ** The line by Lyle is incorrect. A 32 bit program can address 32 bits - not 31!. There are no special compiler switches needed to allow you to address higher than 2Gb. That being said, the OS shares some of your address space. Windows, will allocate 2Gb of real memory for its own use and limit the virtual address space for any single process to 2Gb by default. This can be changed with the /3gb switch in c:\boot.ini John, your interpretation of the article is also incorrect. Specifically, you say "It seems as if ALL programs together under windows can only take 2GB. So - if I have 3 programs each take 1GB -- I would have a problem -- even though I have 4GB." You would have a performance problem, not necessarily a memory problem, though I have seen Windows deny mallocs when it was reorganising it's own memory usage even though there was plenty of "memory" - ie disk space - available. The KB article states that EACH process can address "typically" 2GB of space and the article goes on to talk about addressing MORE than 4GB on a 32 but machine which is more than a 32 bit word can address. The article also talks about the /3GB switch which I describe a bit below. To enable it, add it to the C:\boot.ini file as in [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /3GB With this configuration, Windows own use of virtual addresses is limited to 1Gb and any application can address 3Gb of virtual space. I use this config in a lap-top of 4gb where I run a VM Windows 2003 server with ITSM and have the VM's memory resident (non-swappable IF Windows agrees) in the host OS. This gives me excellent VM performance, as well as allowing me to run a host of other apps such as Visual C, Outlook with a 1gb mail file, Word, etc. This does affect performance in odd ways when you are running many different memory hungry applications (such as MS Word) but it is relatively standard for 32 bit servers running only server type applications (such as Oracle / Remedy etc). Microsoft has a few articles on it. Look for the /3gb switch. Cheers Ben Chernys NOTICE: This email message is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: "Where the Answers Are"_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: "Where the Answers Are"_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: "Where the Answers Are"_ _______________________________________________________________________________ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: "Where the Answers Are"