Java support
below garbage collectors.
a.
Serial
Generational Collector (-XX:+UseSerialGC)
b.
Parallel
Collector (-XX:+UseParallelGC)
c.
Concurrent
Mark and Sweep collector (-XX:+UseConcMarkSweepGC)
d.
G1
Garbage collector (-XX:+UseG1GC)
you can
choose which garbage collectors to use to your application. For example, by
passing the flag ‘-XX:+UseSerialGC’ to JVM, you are asking JVM to use serial
generational collector to perform garbage collection.
Serial
Generation Collector
Serial
collector is single threaded, it pauses all the application threads while performing
garbage collection. To turn on this collector use the option ‘-XX:+UseSerialGC’
while launching the application. This collector is mainly designed for single
threaded environment, not suitable for server side applications.
This collector
uses Mark and Sweep algorithm internally.
Parallel
collector
This use
parallel threads for young and old generation garbage collection. The parallel
collector is enabled with the command-line option -XX:+UseParallelGC.
You can
control the number of garbage collector threads with the command-line option
-XX:ParallelGCThreads=N. N represent number of threads to use for parallel
garbage collection.
For more
information, refer below post.
Concurrent
Mark and Sweep collector (CMS)
This uses mark
and sweep algorithm to perform garbage collection. It pauses all the
application thread while performing garbage collection. This is preferred for any
application with a low pause time requirement.
For more
information refer below post.
G1
Garbage Collector
G1 stands
for Garbage first collector. Previous three garbage collectors (serial, parallel,
CMS) structures the heap into 3 sections.
a.
Young
Generation
b.
Old
Generation
c.
Permanent
Generation
G1
collector addresses this problem in different perspective. Entire heap is partitioned
into set of equal sized regions. Some regions are given to Eden space, some are
given to survival space and some are given to old generation.
G1
performs a concurrent global marking phase to determine the liveness of objects
throughout the heap. After the mark phase completes, G1 knows which regions are
mostly empty. It collects in these regions first, which usually yields a large
amount of free space. G1 concentrates its collection and compaction activity on
the areas of the heap that are likely to be full of reclaimable objects, that
is, garbage. G1 uses a pause prediction model to meet a user-defined pause time
target and selects the number of regions to collect based on the specified
pause time target.
How to
choose the garbage collector?
Profile
the application by simulating production load and apply these garbge collectors
one by one and choose which one fits for you.
Reference
No comments:
Post a Comment