Jean-Philippe Bempel
jpbempel.bsky.social
Jean-Philippe Bempel
@jpbempel.bsky.social
Sr Sw Eng @Datadoghq, optimize software running on JVM. Love performance topics and mechanical sympathy supporter. Java Champion & @javamissionctrl committer
Pinned
Reposted by Jean-Philippe Bempel
In this week's blog post, you'll learn that JFR doesn't like arrays in other complex types as fields in custom JFR events, and what types are supported: mostlynerdless.de/blog/2025/12...
Don't use Arrays or other Complex Types in Custom JFR Events - Mostly nerdless
Learn about arrays and complex types in custom JFR events and about all the supported field types in this weeks blog post.
mostlynerdless.de
December 12, 2025 at 7:49 AM
Reposted by Jean-Philippe Bempel
I just implemented a tool accepting a .pdb file to generate a .sym file listing functions symbols. A first post (chnasarre.medium.com/9826fd4f251e...) shows the coding details.
I'm sharing my vibe coding experience using Cursor in a second longer one (chnasarre.medium.com/f957106a3e9f...)
How to dump function symbols from a .pdb file
Detail how to write a tool that generates a .sym file listing functions symbols with their address, size and signature from a .pdb file
chnasarre.medium.com
December 8, 2025 at 10:33 AM
Reposted by Jean-Philippe Bempel
My latest blog: One Positive Effect of Java 25 with Compact Object Headers Enabled

donraab.medium.com/one-positive...
One Positive Effect of Java 25 with Compact Object Headers Enabled
Measuring the memory cost of ArrayList and Eclipse Collections FastList
donraab.medium.com
December 5, 2025 at 4:50 AM
Reposted by Jean-Philippe Bempel
I'm happy to announce that my meta-agent (a Java agent that instruments other Java agents) now has a nicer Web UI (thanks @hardcoding.fr):

github.com/parttimenerd...
December 2, 2025 at 3:07 PM
Reposted by Jean-Philippe Bempel
C2: create better fill and copy benchmarks, taking alignment into account

bugs.openjdk.org/browse/JDK-8...
github.com/openjdk/jdk/...

…interesting and informative discussions

Via @forked-franz.bsky.social on twitter x.com/forked_franz...
bugs.openjdk.org
November 27, 2025 at 8:44 AM
Reposted by Jean-Philippe Bempel
TIL: Early exit makes 'javac' to duplicate 'finally' blocks. Interesting read: www.benf.org/other/cfr/fi...
CFR - yet another java decompiler - What about finally?
www.benf.org
November 27, 2025 at 8:01 AM
Reposted by Jean-Philippe Bempel
Help--my LocalDate isn’t flattened! Just before my Valhalla talk at JFall, I found out that the early access build can flatten LocalDate arrays, but the latest version from Github cannot. Why? Serialization, of course. Read the gory details at https://horstmann.com/un...
November 10, 2025 at 6:52 AM
Reposted by Jean-Philippe Bempel
youtu.be/Z3OJ0K5fReA
C++ Compile times. Ethereum byte code and runtime. Java and exceptions; more C++ compile times. Fat binaries & code portability. Language design around memory safety
Coffee Compiler Club, 2025_11_14
YouTube video by Cliff Click
youtu.be
November 16, 2025 at 12:12 AM
Reposted by Jean-Philippe Bempel
Reposted by Jean-Philippe Bempel
✏️ JEP 8371379 was drafted
Title: Deprecate the UTF-16-only Internal String Representation
Type: feature
Component: core / lang
See openjdk.org/jeps/8371379
November 5, 2025 at 11:50 PM
Reposted by Jean-Philippe Bempel
🎯 JEP 526 proposed to target JDK 26
Title: Lazy Constants (Second Preview)
Type: feature
Component: core / lang
Release: 26
See openjdk.org/jeps/526
October 30, 2025 at 6:50 PM
Reposted by Jean-Philippe Bempel
🎯 JEP 500 proposed to target JDK 26
Title: Prepare to Make Final Mean Final
Type: feature
Component: core
Release: 26
See openjdk.org/jeps/500
October 29, 2025 at 11:50 AM
Reposted by Jean-Philippe Bempel
🎯 JEP 516 proposed to target JDK null
Title: Ahead-of-Time Object Caching with Any GC
Type: feature
Component: hotspot / gc
See openjdk.org/jeps/516
October 28, 2025 at 10:50 AM
Reposted by Jean-Philippe Bempel
Learn how to import JFR data into DuckDB, to easily query and analyze your profiling data in this week's blog post: mostlynerdless.de/blog/2025/10...
Making JFR Quack: Importing JFR files into DuckDB - Mostly nerdless
Learn how to import JFR data into DuckDB, to easily query and analyze your profiling data in this weeks blog post.
mostlynerdless.de
October 24, 2025 at 7:48 AM
Reposted by Jean-Philippe Bempel
I just published a new article: Using profiler function hooks in .NET with Silhouette.
In the process, we also learn how to use static linking with NativeAOT.

minidump.net/using-functi...
Using profiler function hooks in .NET with Silhouette
In this article, we see what are function hooks, and how to use them in .NET with Silhouette. We also learn how to statically link a library with NativeAOT.
minidump.net
October 21, 2025 at 11:49 AM
Reposted by Jean-Philippe Bempel
Method tracing in async-profiler 4.2
github.com/async-profil...

Also there’s system-wide process sampling on linux, this ends up in a `profiler.ProcessSample` JFR event. (I would love to see something like that on Darwin too).
github.com/async-profil...

#async-profiler
Method Tracing · async-profiler async-profiler · Discussion #1497
Background Async-profiler is often described as a low-overhead sampling profiler for Java. Sampling means the profiler collects statistical information about program execution by periodically inter...
github.com
October 21, 2025 at 11:53 AM
Reposted by Jean-Philippe Bempel
@pminborg.bsky.social and I wrote a bit about some of the many performance improvements in JDK 25: inside.java/2025/10/20/j...

tl;dr: upgrade to JDK 25 and add -XX:+UseCompactObjectHeaders
Performance Improvements in JDK 25
Java is constantly evolving with ever increasing performance. JDK 25 comes with significant performance improvements compared to previous versions including scoped values, improved GCs, lots of compil...
inside.java
October 20, 2025 at 9:27 AM
Reposted by Jean-Philippe Bempel
A nice article about "Memory Allocation in Go"
#golang

nghiant3223.github.io/2025/06/03/...
Memory Allocation in Go
Memory Allocation in Go
nghiant3223.github.io
September 17, 2025 at 11:17 AM
Reposted by Jean-Philippe Bempel
Can We Know Whether a Profiler is Accurate?

Spoiler: yes we can! But it took us figuring out a way to work around the fundamental observer effect.

stefan-marr.de/2025/10/can-...

If you're at SPLASH, don't miss our talk at VMIL today and at OOPSLA on Saturday!
Can We Know Whether a Profiler is Accurate?
Measuring causes profiles to change, so is there a way to work around it and know whether a profile is accurate?
stefan-marr.de
October 15, 2025 at 12:41 AM
Reposted by Jean-Philippe Bempel
JDK Memory corruption on AArch64 Byte code Rewriting, this can lead to impossible branch being taken among other issues.
(via Ismael Juma on Twitter)
bugs.openjdk.org/browse/JDK-8...
#openjdk
Loading...
bugs.openjdk.org
October 11, 2025 at 11:36 AM
Reposted by Jean-Philippe Bempel
youtu.be/wYO4-s8WsnA
Modules, std lib, abi, portable ELF, cffi, build systems, dependencies, project root, xtc modules, as directories, diff in “module” impls, meaning of “import”, foreign modules. Typechecking dead code? Combinatorial explosion build targets
Coffee Compiler Club, 2025_10_10
YouTube video by Cliff Click
youtu.be
October 11, 2025 at 3:57 PM
Reposted by Jean-Philippe Bempel
Ever seen a verbose render how a very small GC operation looks like in the context of larger safepoint? Here it is: (I need to blog about things you can see there)
October 10, 2025 at 10:35 AM
Reposted by Jean-Philippe Bempel
Learn how to compare objects from JFR recordings in Java and why this is slightly trickier than you might have expected in this week's blog post: mostlynerdless.de/blog/2025/10...
JFR and Equality: A tale of many objects - Mostly nerdless
Learn how to compare objects from JFR recordings in Java and why this is slightly trickier than you might have expected.
mostlynerdless.de
October 10, 2025 at 9:40 AM