Making JFR Quack: Importing JFR files into DuckDB
A guide on importing Java Flight Recorder (JFR) profiling data into DuckDB for analysis using SQL queries.
Johannes Bechberger is a JVM developer at SAP sharing in-depth articles on profiling, debugging, OpenJDK internals, async-profiler, and JVM performance, based on real-world work in the SapMachine team.
36 articles from this blog
A guide on importing Java Flight Recorder (JFR) profiling data into DuckDB for analysis using SQL queries.
Explores the intricacies of comparing Java Flight Recorder (JFR) event objects, highlighting unexpected challenges in object equality.
Explains how to suppress Java Flight Recorder (JFR) startup log messages using the -Xlog:jfr+startup=error JVM flag.
A technical exploration of seven methods to intentionally waste CPU time for precise durations, focusing on user-land implementations for profiling tests.
A guide to profiling Java applications on Cloud Foundry using the cf CLI Java plugin for heap and thread dumps.
A technical analysis of Java 25's CPU-Time Profiler, focusing on the sampler queue's semantics and synchronization implementation.
Deep dive into sizing the central request queue for Java 25's new CPU-time profiler, balancing performance and memory usage.
A deep dive into the implementation details of the new CPU-time profiler introduced in Java Development Kit (JDK) 25.
A developer's raw notes on profiling challenges and ideas for JFR stack sampling in the OpenJDK, written in March 2025.
Explores an experimental front-end tool for querying Java Flight Recorder (JFR) data using a custom SQL-like language.
Introduction to Java 25's new experimental CPU-time profiler, explaining its advantages over the current JFR method sampler.
A technical guide on installing and running SAP's Garden Linux on an Android phone using Termux and proot-distro.
Explains JEP 518's new JFR cooperative sampling for unbiased stack walking at safepoints in the JVM, targeting JDK 25.
A tutorial on setting up a Java Spring Boot development environment on an Android phone using Termux and VSCode.
A technical blog post about writing an experimental Linux scheduler using eBPF and Java that dynamically allocates CPU cores based on system sound levels.
Introduces a meta-agent for Java that instruments other instrumentation agents, allowing developers to monitor and intercept class transformations at runtime.