I don't think he "suggested". He stated plainly.
I don't know the people of whom you speak, or the phrase "swap space".
That's true. But the heap is allocated from virtual memory, _only_.
That's what Arne is talking about.
His reply was suitable to the question. He points out that the amount of
physical RAM installed (which I believe is what Frank was describing when
he wrote "even though there's 3GB available") isn't relevant to limits on
memory allocations (including those used to allocate the JVM heap); only
the limits that apply to virtual memory are, and that's exactly what is
affected when one uses the -Xms and -Xmx switches (i.e. you'll only be
able to specify and receive a JVM heap as large as can be allocated from
virtual memory, no matter how large the physical memory is).
You can successfully allocate 1GB or more of memory, even if you only have
512MB (or less!) installed as physical RAM. Conversely, even if you have
32TB of physical RAM installed, you're only ever going to get a process to
see 2GB or 3GB of virtual memory (depending on configuration) if you're
running 32-bit Windows.
Again, the -Xms and -Xmx switches affect the _virtual_ memory side of this
equation, and have no relevance to the physical RAM installed. No matter
how much physical RAM you have installed, as a theoretical matter a
process isn't going to get more than 2GB of virtual memory allocated, and
as a practical matter, due to fragmentation and other uses of the virtual
address space, it isn't going to get much more than 1.5GB (Arne says
"1.6-1.7 GB", another person may see more or less, but it's going to be in
that general ballpark). Add about 1GB to those numbers for 32-bit Windows
configured with the 3GB option.
This is what Arne's talking about when he points out that it's virtual
memory, not physical memory, that's relevant when it comes to those
switches.
I read your first reply to him as a non-sequitur. Yes, you're right...the
switches control the Java heap size. But first you wrote that Arne was
"incorrect", when he never wrote anything that would suggest that the
switches _don't_ refer to the heap size, and in fact clearly describes the
_practical_ limit of heap size on a normal, 2GB-limited installation of
32-bit Windows. And then you wrote something that implied that a process
might use something _other_ than virtual memory, which is a) not correct,
and b) is itself not relevant to the question of what the switches do, nor
to whether Arne's statement was correct or not.
It's unfortunate that's what you were taught. Because your programs were,
in that scenario, always allocating virtual memory.
I hope that you now understand better what those terms actually mean.
Pete