Generational Copying, which is suitable for testing applications
on a desktop machine with a small (less then 128 MB) heap.

Single Spaced Concurrent, which reduces or eliminates pauses in
the VM that are due to garbage collection. Because it trades memory
throughput for reduced pause time, you generally need a larger heap
size than with other GC types. If your ordinary Java threads create
more garbage than this GC can collect, the VM will pause while the
Java threads wait for the garbage collection to finish.

Generational Concurrent, which creates a "nursery" space within
the heap. New objects are created within the nursery. When the
nursery is full, JRockit "stops-the-world," removes the dead
objects from the nursery, and moves live objects to a different
space within the heap. Another thread runs in the background to
remove dead objects from the non-nursery space. This GC type has a
higher memory throughput than a single spaced concurrent GC.

Parallel, which allocates all objects to a single spaced heap.
When the heap is full, all Java threads are stopped and every CPU
is used to perform a complete garbage collection of the entire
heap. This behavior causes longer pause times than for the
concurrent collectors but maximizes memory throughput.

A nursery is the area of the Java heap that the VM allocates to
most objects. Instead of garbage collecting the entire heap,
generational garbage collectors focus on the nursery. Because most
objects die young, most of the time it is sufficient to garbage
collect only the nursery and not the entire heap.