From: Arne Vajhøj on
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
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
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
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
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)
First  |  Prev  | 
Pages: 1 2
Prev: J2ME Development on Linux
Next: second person "y'all"