<p>I've always been able to allocate 1400 megabytes for Java SE running on 32-bit Windows XP (Java 1.4, 1.5 and 1.6).</p>

<pre><code>java -Xmx1400m ...
</code></pre>

<p>Today I tried the same option on a new Windows XP machine using Java 1.5_16 and 1.6.0_07 and got the error:</p>

<pre><code>Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
</code></pre>

<p>Through trial and error it seems 1200 megabytes is the most I can allocate on this machine.</p>

<p>Any ideas why one machine would allow 1400 and another only 1200?</p>

<p>Edit: The machine has 4GB of RAM with about 3.5GB that Windows can recognize.</p>

The JVM needs contiguous memory and depending on what else is running, what was running before, and how windows has managed memory you may be able to get up to 1.4GB of contiguous memory.  I think 64bit Windows will allow larger heaps.