Archive | Java

Understanding JVM Garbage Collection – Part 9 Garbage First (G1) Garbage Collector (GC)

Garbage First (G1) Garbage Collector (GC) The G1GC is a server-style generational, incremental, parallel, mostly concurrent, stop-the-world evacuating garbage collector which is suitable for multiprocessor machines with a large amount of memory. G1GC aims to meets garbage collection pause-time goals with high probability, while achieving high throughput. G1GC monitors its stop the world pauses in […]

Continue Reading
CMS_GC

Understanding JVM Garbage Collection – Part 8 Concurrent Mark Sweep (CMS) Collector

  The CMS collector uses an evacuating collector for the young generation and a mostly concurrent mark sweep (non-compacting) algorithm for the tenured. CMS young generation GC is very similar to the parallel collector. The CMS garbage collector also requires coordination between the young and tenured GC. This is why CMS uses a parallel collector […]

Continue Reading
Parallel_Collector_GC_1

Understanding JVM Garbage Collection – Part 6 (Serial and Parallel Collector) 

JVM GC Implementation The JVM GC is a pluggable subsystem that enables the JVM to execute the same Java program with different GC implementations. Using a new GC algorithm does not require any change to the existing Java program. However, the chosen GC implementation may significantly impact the program’s performance.   Java provides three types […]

Continue Reading
NUMA vs UMA

Understanding JVM Garbage Collection – Part 4

JVM GC Terminology The terminology used to describe garbage collection algorithms can be confusing. In this section, we will explain some commonly used terms and their meanings. Live set – The live set refers to the number of live objects in a heap. The size of the live set has a significant impact on the […]

Continue Reading
Java_Memory_Layout

Understanding JVM Garbage Collection – Part 3

Weak Generational Hypothesis The weak generational hypothesis has had a profound impact on the JVM’s heaps layout. Understanding the weak generational hypothesis is essential in order to understand various GC algorithms and approaches. The Weak Generational Hypothesis states that most objects die young. In other words, most objects created will be garbage collected very quickly. […]

Continue Reading

Understanding JVM Garbage Collection – Part 1

Java is a popular language for business and enterprise computing. Java and the JVM have enjoyed enormous success over the last two decades. Java was initially considered a slow language (late 90’s). That changed with the introduction of the HotSpot virtual machine in April 99. HotSpot improved performance via “just in time” compilation and adaptive optimisation. Since […]

Continue Reading