Phil Swenson posted "-Xmx is hurting Java" and spamlinked it on a mailing list this morning. His statement is that by limiting the available RAM to a JVM that's less than the available memory on the machine is a bad thing.
Here's his main point:
... going Out Of Memory on a system which does have enough memory is plain incorrect. Any program on a system can due to unforeseen circumstances might temporarily require more memory than its user thought it would. It could be that disk IO became slow or there were suddenly a traffic spike for a few minutes, etc. Operating Systems found a way around this a long time ago using virtual memory and disk swapping. Sure swapping causes your program to go slow but it doesn't outright crash it.
I have 24gb of ram on my machine (since ram is super cheap nowdays). I should never see an OutOfMemoryException. Yet time and again I see it pop up in Java programs, even when they were using a mere fraction of my 24 gigs of ram.
Well, he has a point because -Xmx can screw up his thing, chronon, which has a lot of memory requirements. But -Xmx is hurting him, not everyone else, and it makes sense in a virtual machine where garbage collection isn't free, and garbage collection not being free is what gets you away from having to manage all your memory yourself, and getting rid of it would create more problems than it would solve.
if he wants to use all the ram in his machine, why not use ByteBuffer.allocateDirect() and allocate it himself? That way he gets all the ram his application wants without making the rest of us vulnerable to whatever jerkwad overuses memory without realizing it.
And never mind how whingy the whole "talk to Mark Reinhold and get him to fix it" sounds.