JDK Flight Recorder Events in GraalVM Native Binaries
GraalVM 21.2+ now supports JDK Flight Recorder (JFR) in native binaries, enabling low-overhead profiling for compiled Java applications.
Morling.dev is the personal blog of Michael Morling, a software engineer and architect with deep expertise in Java, Spring, JVM internals, architecture, performance, and developer tooling. His writing focuses on practical and detailed explanations of topics such as Spring framework internals, microservices design, JVM garbage collection, performance tuning, clean architecture, Gradle builds, and language features that matter in real projects. Michael often breaks down subtle behaviors of the JVM and Spring ecosystem, helping developers understand why things work the way they do and how to improve reliability and efficiency in production systems.
91 articles from this blog
GraalVM 21.2+ now supports JDK Flight Recorder (JFR) in native binaries, enabling low-overhead profiling for compiled Java applications.
A recap of 2021 conference talks on Debezium and Change Data Capture (CDC), exploring patterns and integrations with tools like Kafka and Infinispan.
A developer details his home office setup, focusing on the tech gear he uses for work, including monitors, cameras, and audio equipment.
Explains JEP 413 for Java 18, enabling executable, testable code snippets in JavaDoc from external files like test directories.
Explains how to manage and retrieve locale-specific resource bundles across modules in Java 9+ applications for internationalization.
Announcing JfrUnit 1.0.0.Alpha1, a JUnit extension for asserting JDK Flight Recorder events in unit tests for JVM applications.
An analysis of key trends in the Apache Kafka ecosystem, including connector growth, self-service data pipelines, and stream processing adoption.
An overview of Kafka's new KRaft mode, which removes the ZooKeeper dependency for metadata management and controller election.
Explains how javac's ct.sym file ensures Java backwards compatibility by managing API availability across different Java versions.
Exploring Java 16's incubating Vector API to implement the FizzBuzz problem using SIMD instructions for performance gains.
Exploring how to use Java 16's new Unix-domain socket support to connect to a PostgreSQL database for improved security and performance.
Explores jlink's link-time phase for validating API signatures in modular Java apps to prevent runtime errors like NoSuchMethodError.
Explains a Java NoSuchMethodError with ByteBuffer.position() when code compiled with JDK 9+ runs on Java 8, and how to prevent it.
Introduces JfrUnit, a tool for automated performance regression testing in Java by analyzing memory, I/O, and SQL metrics via JDK Flight Recorder.
Explores combining jlink and AppCDS to create smaller, faster-starting Java container images for Quarkus applications.
A guide to integrating Testcontainers with Quarkus for better database testing, using QuarkusTestResourceLifecycleManager.
Explores class unloading in layered Java applications using JPMS and the Layrry API to manage plugin memory and avoid leaks.
A guide to building the hsdis disassembler library for OpenJDK 15 to analyze JIT compiler assembly output.
Introduces JmFrX, an open-source tool for capturing JMX data into JDK Flight Recorder files for Java application monitoring and analysis.
A developer details building a custom, serverless search engine for a static blog using Java, Apache Lucene, Quarkus, and AWS Lambda.