The "UseParallelGC" switch turns on the parallel collector for new generation objects which...
- Really has no effect if you only have one processor core. This collector run faster with multiple cores, but does not increase performance on a single processor. - Only applies to new generation objects. New generation GC is the shorter faster GC (compared to the old generation). So you are not improving the full GC, which should be for old generation.
The "incgc" switch turns on the incremental collector for old generations objects, which should help if you can't take large hiccups in your program.
This collector is actually slower than the default collector. The purpose of this collector is to spread out collections over many iterations -- so while it will take longer overall, you will hopefully not get the one long full GC cycle.
This collector is not recommended if you generate a lot of garbage.
The "UseConcMarkSweepGC" switch turns on the concurrent old generation collector which may help here. This collector is designed so that some of its phases run concurrently, so while it may take a long time, you program is still running during part of its cycle.
You can also turn on the parallel new generation collector along with this collector by using the "UseParNewGC" switch in addition to the "UseConcMarkSweepGC" switch.