Prev: J2ME Development on Linux
Next: Java app installer
From: Arne Vajhøj on 21 Feb 2010 09:39 On 21-02-2010 00:26, Mike Schilling wrote: > "Lew"<noone(a)lewscanon.com> wrote in message > news:hlph7c$e57$1(a)news.albasani.net... >> Mike is correct that a 32-bit JVM is limited to somewhat less than 2 GB >> heap, the exact limit depending on the OS. It's also necessary that the >> JVM allocate contiguous memory, AIUI. > > I don't know why that would be, It does not have to be that way. But it is my understanding that BEA (now Oracle) JRockit is the only x86 32 bit JVM, that support non contigious heap (which for some reason is synonymous with supporting the /3GB switch for Windows). Given that the world is at full speed towards 64 bit, then the problem will disappear in some years. Arne
From: Mike Schilling on 21 Feb 2010 10:50 Arne Vajh�j wrote: > On 21-02-2010 00:26, Mike Schilling wrote: >> "Lew"<noone(a)lewscanon.com> wrote in message >> news:hlph7c$e57$1(a)news.albasani.net... >>> Mike is correct that a 32-bit JVM is limited to somewhat less than >>> 2 GB heap, the exact limit depending on the OS. It's also >>> necessary that the JVM allocate contiguous memory, AIUI. >> >> I don't know why that would be, > > It does not have to be that way. > > But it is my understanding that BEA (now Oracle) JRockit > is the only x86 32 bit JVM, that support non contigious > heap (which for some reason is synonymous with supporting > the /3GB switch for Windows). Almost certainly because Windows puts things at fixed places in the 4GB 32-bit virtual address space that makes 3GB of contiguous virtual space unavailable. Since the NT family is in some ways a descendent of VMS, I'd guess that 3GB would amount to the first two GB and the last GB [1], with the third GB [2] used to map stuff common to all processes. 1. That is, P0, P1, and S1 space. 2. S0 space.
From: Arne Vajhøj on 21 Feb 2010 12:53 On 21-02-2010 10:50, Mike Schilling wrote: > Arne Vajh�j wrote: >> On 21-02-2010 00:26, Mike Schilling wrote: >>> "Lew"<noone(a)lewscanon.com> wrote in message >>> news:hlph7c$e57$1(a)news.albasani.net... >>>> Mike is correct that a 32-bit JVM is limited to somewhat less than >>>> 2 GB heap, the exact limit depending on the OS. It's also >>>> necessary that the JVM allocate contiguous memory, AIUI. >>> >>> I don't know why that would be, >> >> It does not have to be that way. >> >> But it is my understanding that BEA (now Oracle) JRockit >> is the only x86 32 bit JVM, that support non contigious >> heap (which for some reason is synonymous with supporting >> the /3GB switch for Windows). > > Almost certainly because Windows puts things at fixed places in the 4GB > 32-bit virtual address space that makes 3GB of contiguous virtual space > unavailable. Since the NT family is in some ways a descendent of VMS, I'd > guess that 3GB would amount to the first two GB and the last GB [1], with > the third GB [2] used to map stuff common to all processes. > > 1. That is, P0, P1, and S1 space. > 2. S0 space. They could have done it that way, but they did not. /3GB expands userspace from 00000000-7FFFFFFF to 00000000-BFFFFFFF. Arne
From: Roedy Green on 25 Feb 2010 18:15 On Sat, 20 Feb 2010 10:31:32 -0800 (PST), Enter The <enterthe(a)walla.com> wrote, quoted or indirectly quoted someone who said : >I am using a computer with 6.0g ram, on Windows Vista Business 64-bit. > >In Netbeans, I have set my VM Options to -Xmx1g. It works. >If I set the vm options to -Xmx2g it does not work. I get this error: > >Error occurred during initialization of VM >Could not reserve enough space for object heap >Could not create the Java virtual machine. > >Why does this happen when I have 6 gigs of ram? I frequently run >System.gc() to reduce the memory used. I have tried turning off the >vista Superfetch to reduce memory usage, but that has not helped. I >currently have 3gb free (shown by task manager) but it won't start). > >my java version is > >Error occurred during initialization of VM >Could not reserve enough space for object heap >Could not create the Java virtual machine. The equivalent problem with IntelliJ can be fixed by telling IntelliJ to use 64-bit Java and a 64-bit OS. With a 32-bit Java all kinds of stuff has to fit in that 32-bit address space besides the heap. -- Roedy Green Canadian Mind Products http://mindprod.com The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair. ~ Douglas Adams (born: 1952-03-11 died: 2001-05-11 at age: 49)
From: Roedy Green on 25 Feb 2010 18:19
On Sun, 21 Feb 2010 07:50:08 -0800, "Mike Schilling" <mscottschilling(a)hotmail.com> wrote, quoted or indirectly quoted someone who said : >Almost certainly because Windows puts things at fixed places in the 4GB When a new address space is introduced, it seems infinitely big, and there is a tendency to nail down great chunks of it for stuff that has questionable long term utility. It would be interesting to see a map of just how those 32 addressing bits end up being allocated in a real world situation, perhaps a pie chart. -- Roedy Green Canadian Mind Products http://mindprod.com The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair. ~ Douglas Adams (born: 1952-03-11 died: 2001-05-11 at age: 49) |