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.
Optimizing Robotics application’s Performance!
In this post, we would like to share our real-world experience in optimizing a Java application which was controlling the robots in a warehouse. This application would give instructions to the robots in the warehouse on what actions to perform. Based on those instructions, robots carry out their job in the warehouse. Occasionally, this application... Continue Reading →
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 →
How to configure Virtual Threads in Spring Boot application
Spring Boot is the de facto standard for developing web applications using Java. This framework has a lot of capabilities so that it can minimize the boiler plate code. What it means to the developers is, it is very much possible to configure or extend a Spring Boot application in many ways. This is such... 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 →