Java Garbage Collection

Tuning the garbage collector is the most important thing that can be done to improve the performance of a Java application. GC is typically caused when the JVM decides GC is necessary, specifically when: OpenJDK has three collectors suitable for production, with different performance characteristics. In order to study the GC behaviours in application, it … Read moreJava Garbage Collection

Balloon steals memory from virtual machines

This article is my experience with memory balloon on virtual machine. I came across an ElasticSearch server (ESXi guest with 32GB physical memory) where the main process keeps dying of OOM. Even worse, after the OOM event, the free memory left is about 10G and Elastic Search cannot start because its JVM is set with … Read moreBalloon steals memory from virtual machines

How is memory managed in Linux

When speaking about memory there are a few concepts that I had to wrap my head around. I’m hence putting them together for future reference. The fine details should be covered in any university course on computer architecture. To keep it simple, I’m only covering a high level in Linux. Much of the content below … Read moreHow is memory managed in Linux

Linux Kernel and process scheduling

Kernel introduction Linux system is composed of three main bodies of code, in line with the most traditional UNIX implementations: Kernel: The kernel is responsible for maintaining all the important abstractions of the operating system, such as virtual memory and processes; System Library: The system libraries define a standard set of functions through which applications … Read moreLinux Kernel and process scheduling