I’m Joel, a Software Engineer with a MSc in Computer and Information Engineering from Uppsala University (Civilingenjör i Informationsteknologi). I am currently working in the Webex team at Cisco, developing the Webex communications platform for non-embedded platforms. I’ve previously been working in the Java Platform Group at Oracle, developing the HotSpot JVM as part of the (Z)GC…
I’m an OpenJDK Reviewer mainly focused on the Garbage Collection (GC) subsystem(s), with an emphasis on ZGC. You can see my active roles in the OpenJDK Community Census https://openjdk.org/census#jsikstro . 
 Contributions 
 You can find the bulk of my OpenJDK contributions in the following links: 
 
 Mainline PRs: https://github.com/openjdk/jdk/pulls?q=author:jsikstro 
…
An nmethod, which I’ll refer to as NMethod, is HotSpot’s representation of a natively compiled Java method, the result of a JIT compilation, typically produced by the C1 or C2 compilers. NMethods are interesting because they require cooperation from the Garbage Collector (GC) to execute efficiently while fitting into Java’s automatic memory management model. 
 In this post,…
Why is my first C++ (m)allocation always 72 KB?? It’s the ’emergency pool’ for exceptions, here’s how I uncovered it using GDB and digging through the source code of libstdc++, glibc and Valgrind!
Introduction 
 While digging into Project Valhalla , I encountered a subtle part of the JVM that turned out to be a prime opportunity for optimization. This exploration led to an approach that shaves unused memory from Java class instance metadata. 
 In this post, I’ll walk through some of the behind-the-scenes details of one of Project Valhalla’s core features: value classes,…
NUMA-aware relocation is a feature recently added to ZGC, one of the garbage collectors in OpenJDK, with the introduction of JDK-8359683 , set to release in JDK 26. Building on the recent memory allocation overhaul (see “How ZGC allocates memory for the Java heap” ), this feature further enhances NUMA support and optimization in ZGC. For those interested in the code changes, see the…
Introduction 
 MADV_COLLAPSE is a madvise(2) advice (added in Linux 6.1) that requests a best-effort, synchronous collapse of native pages in a range into Transparent Huge Pages (THPs). As the man page states: 
 
 Perform a best-effort synchronous collapse of the native pages mapped by the memory range into Transparent Huge Pages (THPs). MADV_COLLAPSE operates on the current state of…
This post explores how ZGC, one of the garbage collectors in the OpenJDK, allocates memory for the Java heap, focusing on enhancements introduced in JDK-8350441 with the Mapped Cache. A garbage collector does much more than just collect garbage - and that’s what I want to unpack in this post. Whether you’re a Java nerd yearning for details, a GC enthusiast, or just curious about how…
TLDR; If you are experiencing similar issues, upgrade to the latest version of ddclient or change IP-check website to something other than dynamicdns.park-your-domain.com. See Discussion . 
 Backstory 
 On the morning of 22/3 I noticed that my website was down. My first thought was maybe the power went out and my server never rebooted, but no, it was running perfectly. The next thing I…
Analyzing performance can be challenging, especially when diagnosing regressions. Finding the right methods to investigate performance issues is often time-consuming and complex.
You may have heard of perf, a powerful Linux tool for performance measurement, available from the kernel. 
 This post will guide you through using perf to analyze performance on Linux, serving as a practical…
When I first found out about huge pages I was a bit confused. Why do we need larger pages? How do I configure this? Is it always on? I had many questions. The first thing you should know is that the concept of larger pages has many names, although they all achieve the same thing: increase the page size, usually to something larger than 4096 bytes (4 KB), which is the default on many systems.
Download 
 Start by navigating to https://jdk.java.net/ and download the latest build. At the time of writing, JDK23 is the latest version and can be found at https://jdk.java.net/23/ . 
 Download the zip file shown next to Windows/x64. Although you could unzip the contents anywhere on your computer, I recommend that you should place them in C:\Program Files\OpenJDK , inside a folder named…
In June 2024 I graduated from the Master’s Programme in Computer and Information Engineering at Uppsala University. These are some of the projects I have done during my studies. 
 jsmalloc @ Oracle (Master’s Thesis) 
 
 Adapted TLSF memory allocator for use in ZGC, a garbage collector in the HotSpot Java Virtual Machine. 
 Available on GitHub 
 Overview on…

 This is a repost of my blog entry about my master thesis at Oracle. The original was published on inside.java . 
 
 My name is Joel and I am currently finishing my 5-year degree in Computer and Information Engineering at Uppsala University, with a focus on Software Engineering. This blog post details my master thesis work as part of the GC team at Oracle’s Stockholm office in the…