title: java full gc taking too long
body: <p>I have a Java client which consumes a large amount of data from a server.  If the client does not keep up with the data stream at a fast enough rate, the server disconnects the socket connection.  My client gets disconnected a few times per day.  I ran jconsole to see the memory usage, and the heap space graph looks like a fairly well defined sawtooth pattern, oscillating between about 0.5GB and 1.8GB (2GB of heap space is allocated).  But every time I get disconnected is during a full GC (but not on every full GC).  I see the full GC takes a bit over 1 second on average.  Depending on the time of day, full GC happens as often as every 5 minutes when busy, or up to 30 minutes can go by in between full GCs during the slow periods.</p>
  
  <p>I suspect if I can reduce the full GC time, the client will be able to better keep up with the incoming data, but I do not have much experience with GC tuning.  Does anyone have some insight on if this might be a good idea, and how to do it?  Or is there an alternative idea which may work as well?</p>
  
  <p>** UPDATE **
  I used -XX:+UseConcMarkSweepGC and it improved, but I still got disconnected during the very busy moments.  So I increased the heap allocation to 3GB to help weather through the busy moments and it seems to be chugging along pretty well now, but it's only been 1 day without a disconnection.  Maybe if I get some time I will go through and try to reduce the amount of garbage created which I'm confident will help as well.  Thanks for all the suggestions.</p>