But 3 GB???

That is. Just. Wrong.
I also don't see why this amount of memory should be required, given the traffic volumes we're seeing now, except for buggy code. I'd (still) like to see GC logs from a JVM with >=1GB heap that runs out of memory, when using these logging parameters:
-verbose:gc -Xloggc:gc.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails
Anyone can supply?