My Quotes
When U were born , you cried and the world rejoicedLive U'r life in such a way that when you goTHE WORLD SHOULD CRY
Garbage collector(s)
- Garbage
collector can be generational or single spaced with a parallel or a concurrent
mark and a parallel sweep or a concurrent sweep:
- Generational
garbage collection – In this case the heap is divided into two sections: an old
generation and a young generation (nursery). Initially objects are allocated in
the nursery and when it is full, live objects are promoted to the old
generation. For this operation the collector has to stop the Java threads.
- Single-spaced
garbage collection – All objects live in a single space on the heap, regardless
of their age.
- Concurrent
mark and sweep algorithm – The concurrent garbage collection algorithm does its
marking and sweeping concurrently with all other processing, i.e., the Java
threads are not stopped during garbage collection.
- allel garbage collection
mark and sweep algorithm – The parallel garbage collection algorithm stops Java
threads when the heap is full and uses all available CPUs to perform a mark and
sweep of the heap. Typically a parallel collection has longer pause times than
a concurrent collection, but maximizes the application throughput.
We can select a specific garbage collector by using -Xgc:<option>, with option being one of the following:
- singlecon – Single-space, concurrent garbage collection. This mode reduces application throughput but keeps pause times to a minimum.
- gencon – Generational, concurrent garbage collection. The gencon mode is better than the singlecon mode for applications that allocate lots of short-lived objects. This mode reduces application throughput but keeps pause times to a minimum.
- singlepar – Single-space, parallel garbage collection. This mode increases pause times when compared with the concurrent mode but maximizes throughput.
- genpar – Generational, parallel garbage collection. This mode is generally better than the singlepar mode for applications that allocate lots of short-lived objects. In this mode, a higher number of garbage collections are performed than in the singlepar mode, but the individual pause times are shorter, resulting in lower fragmentation in the old generation space.
- genconpar – Generational garbage collection. Sets the garbage collection mode to generational with a concurrent mark algorithm and a parallel sweep algorithm.
- genparcon – Generational garbage collection. Sets the garbage collection mode to generational with a parallel mark algorithm and a concurrent sweep algorithm.
- singleconpar – Single-space garbage collection. Sets the garbage collection mode to single-spaced with a concurrent mark algorithm and a parallel sweep algorithm.
- singleparcon – Single-space garbage collection. Sets the garbage collection mode to single-spaced with a parallel mark and a concurrent sweep algorithm.
- throughput – The garbage collector is optimized for application throughput. This means that the garbage collector works as effectively as possible, giving as much CPU resources to the Java threads as possible. This might, however, cause non-deterministic pauses when the garbage collector stops all Java threads for garbage collection.
- pausetime – The garbage collector is optimized for short pauses. This means that the garbage collection works concurrently with the Java application when necessary, in order to avoid pausing the Java threads. This inflicts a slight performance overhead to the application, as the concurrent garbage collector demands more system resources (CPU time and memory) than the parallel garbage collector that is used for optimal throughput. The target pause time is by default 200 milliseconds, which can be changed by using -XpauseTarget.
- deterministic – Optimizes the garbage collector for very short and deterministic pause times. The garbage collector tries to keep the garbage collection pauses below a given pause target. The performance depends on the application and the hardware. Running on slower hardware, with a different heap size or with a large amount of live data can break the deterministic behavior or cause performance degradation over time; faster hardware or a less amount of live data might allows us to set a lower pause target. The pause target for the deterministic mode is by default 30 milliseconds, which can be changed by using -XpauseTarget
No comments :