DDR Support for Virtual Threads in JDK 21

DDR (Direct Dump Reader) is a Java implementation of the DTFJ (Diagnostic Tooling Framework for Java) API. It works by walking the J9 structures inside a dump to extract the VM and application state. It’s useful for inspecting Java objects at a certain point of execution of a program. For example, you can list all…

Deploying on OCP 4.13 With OpenJ9 CRIU Support

The Deploying on Kubernetes and OpenShift with OpenJ9 CRIU Support blog post (which is now out of date) showed how to deploy on OpenShift Container Platform (OCP) using OpenJ9 CRIU Support. Since that time however, OCP has released Version 4.13 which uses Red Hat CoreOS (RHCOS) 4.13, which is based on RHEL 9. This means…

Optimizing OpenJ9’s Balanced GC Policy for Throughput with Dynamic Breadth First (DBF) Scan Ordering

Optimizing application throughput continues to be a primary goal for any application developer seeking improved application performance. Before I can talk about the details of DBF scan ordering, there are some terms and concepts that must be discussed first. To understand DBF scan ordering, a base knowledge of Garbage Collection (GC), OpenJ9 GC policies, and…

OpenJ9 Debug Images

Most OpenJ9 platforms create debug images as part of the build, automatically on jenkins or when running make all. These are overlays to the JDK which add additional debug information for native debuggers, such as gdb or windbg, to help developers diagnose problems. Looking at a build for the xLinux platform in Jenkins, you can…

OpenJ9 JCL Preprocessor (JPP) is extended to the extensions for OpenJDK

OpenJ9 has been using the JPP to produce a custom set of libraries from a single JCL codebase since its inception. The customized libraries are used to build OpenJ9 JDKs. Initially, only the OpenJ9 JCL codebase is structured to support various JPP configurations. Recently the JPP is extended to preprocess some of the JCL code…