<p>Does anyone have experience with using very large heaps, 12 GB or higher in Java?</p>

<ul>
<li>Does the GC make the program unusable?</li>
<li>What GC params do you use?</li>
<li>Which JVM, Sun or BEA would be better suited for this?</li>
<li>Which platform, Linux or Windows, performs better under such conditions?</li>
<li>In the case of Windows is there any performance difference to be had between 64 bit Vista and XP under such high memory loads?</li>
</ul>

We have an application that we allocate 12-16 Gb for but it really only reaches 8-10 during normal operation.  We use the Sun JVM (tried IBMs and it was a bit of a disaster but that just might have been ignorance on our part...I have friends that swear by it--that work at IBM).  As long as you give your app breathing room, the JVM can handle large heap sizes with not too much GC.  Plenty of 'extra' memory is key.
Linux is almost always more stable than Windows and when it is not stable it is a hell of a lot easier to figure out why.  Solaris is rock solid as well and you get DTrace too :) 
With these kind of loads, why on earth would you be using Vista or XP?  You are just asking for trouble. 
We don't do anything fancy with the GC params.  We do set the minimum allocation to be equal to the maximum so it is not constantly trying to resize but that is it.