Different Phases of Garbage Collection Events

This article gives an overview of common garbage collection phases such as Mark, Sweep, Evacuation, Young GC, and Full and Old GC. It explains their implementation, impact, and trade-offs. Understanding these phases is essential for optimizing garbage collection in applications. Developers can use GC logging for studying behavior and making necessary adjustments.

Virtual Threads Performance in Spring Boot

Spring Boot has become the de facto framework in the Java ecosystem. In this post, let’s discuss how to configure Virtual Threads in a Spring Boot Application and study and compare its performance characteristics with native threads. This Spring Boot application is going to calculate the fibonacci sum for a constant number which is greater... Continue Reading →

String Deduplication in Java

In this article, we’ll learn how to improve the performance of the applications that tend to use most of the space due to extensive usage of Strings. There’s no need to store more than one instance of immutable objects in our heap, and String is a good example. Object Allocation Let’s briefly refresh the information... Continue Reading →

Shenandoah GC Tuning

Shenandoah GC aims to reduce pause times in Java applications by performing garbage collection concurrently with the application threads. At the heart of Shenandoah's innovation is its region-based memory management. The heap is strategically divided into regions, allowing garbage collection to be conducted independently on these segments. This not only facilitates efficient parallelism but also... Continue Reading →

Virtual Threads – A Definite Advantage

It's great to explore the world of Virtual Threads, a powerful feature in Java that promises to revolutionize multi-threaded applications. In this article, we'll delve into how Virtual Threads can enhance your application's performance and scalability, all while keeping thread management overhead very minimal. Let's embark on this journey to harness the full potential of... Continue Reading →

Java CMS GC Tuning

Java Concurrent Mark & Sweep (CMS) algorithm operates by dividing the garbage collection process into multiple phases, concurrently marking and sweeping the memory regions without a significant pause. While its design brings benefits in terms of reduced pause times, it also introduces unique challenges that demand careful tuning and optimization.  In this post, we will... Continue Reading →

Serial GC Tuning

Tailored for simplicity and effectiveness, the Serial GC operates with a single-threaded approach, making it particularly relevant for smaller-scale applications and scenarios where stringent latency requirements aren't the primary concern. In this post, we will explore techniques to tune Serial GC for enhanced performance specifically. However, if you want to learn more basics, you may... Continue Reading →

Java Collection Overhead

The Java Virtual Machine enables Java applications to be platform-independent while optimizing performance. One crucial component to understand, when considering performance, especially memory utilization, is how the Java Collections Framework, specifically the ArrayList, handles size and capacity. In this article, we will concentrate on the overhead caused by lists that contain two or three elements.... Continue Reading →

Up ↑