Johannes Bechberger's Avatar

Johannes Bechberger

@mostlynerdless.de.bsky.social

OpenJDK hacker at SapMachine, works on hello-ebpf for fun

624 Followers  |  97 Following  |  126 Posts  |  Joined: 09.01.2024  |  1.8578

Latest posts by mostlynerdless.de on Bluesky

Preview
Hello eBPF: Concurrency Testing using Custom Linux Schedulers How anyone can write a basic Linux scheduler and use it, for example, to fuzz for concurrency bugs or optimize for specific workloads.

To get you ready for @mostlynerdless.de and @jakehillion.me’s #P99CONF technical session on the Linux scheduler, we're sharing a deep dive from Johannes' hello-ebpf series that looks at concurrency testing using Custom Linux schedulers. www.p99conf.io/2025/08/06/h...

#ScyllaDB

07.08.2025 15:34 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

So more time for other pastimes this autumn.

06.08.2025 08:00 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Seems like I won't be part of the great Devoxx Belgium conference this year.

06.08.2025 07:43 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

TIL: the k3s uninstall script changes the hostname

04.08.2025 15:59 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Java 25's new CPU-Time Profiler (1) - Mostly nerdless Learn all about Java 25's new CPU-time profiler and why it matters in this weeks blog post from the creator himself.

Don't miss the first article of the series: mostlynerdless.de/blog/2025/06...

30.07.2025 13:06 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Java 25's new CPU-Time Profiler: The Implementation (2) - Mostly nerdless In this week's blog post, learn how Java 25's new CPU-time profiler in OpenJDK works internally and why concurrency is challenging.

In this week's blog post, learn how Java 25's new CPU-time profiler works internally, including signal handling, queue design, and async sampling: A deep dive into the core components behind the scenes.
Read more at: mostlynerdless.de/blog/2025/07...
#Java #OpenJDK #JFR #Profiling

30.07.2025 10:09 β€” πŸ‘ 20    πŸ” 7    πŸ’¬ 1    πŸ“Œ 0
Preview
Profiling idea (unsorted from March 2025) - Mostly nerdless This is my actual collection of ideas from March 2025, when it was unclear whether the updated JFR sampling at safepoints made it into JDK 25. It eventually did, so I scrapped the ideas. But it offers...

I'm currently working on my blog post on the inner workings of the new JFR CPU-time profiler. But if you want to learn what other ideas I had, you can read my brain-dump ideas list from March 2025 at mostlynerdless.de/blog/2025/07...

29.07.2025 09:54 β€” πŸ‘ 0    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

I just saw that I published my last blog post more than a month ago. Guess what I'll be working on this week? I procrastinated and had other things to do, so I hope I get into my blogging rhythm again. There are many interesting topics (short and longer) lined up.

28.07.2025 08:22 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Release Loader for 4.1 (v10): OpenTelemetry support and improved native memory profiler Β· jvm-profiling-tools/ap-loader ap-loader v10 Drop support for async-profiler < 4.0 versions, as 4.0 changed how its tested Major changes in the usage of the JFR conversion made by async-profiler which are not hidden Clean up th...

I just released ap-loader 4.1 (v10). ap-loader is a wrapper around async-profiler, conveniently packaging all platform versions in one JAR.

You can find the newest release on GitHub (github.com/jvm-profilin...) and soon on Maven Central.

28.07.2025 06:39 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Btw. Firefox isn't supporting Java applets for 10 years (blog.mozilla.org/futurereleas...) and Chrome for 11 (blog.chromium.org/2013/09/sayi...), so essentially nobody will notice the removal of applets from Java.

08.07.2025 20:23 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Thombstone with "RIP Applet" written on it.

Thombstone with "RIP Applet" written on it.

RIP Java Applets. You made Java popular and helped it grow to what it is today.

JEP 504: Remove the Applet API has been proposed to target (openjdk.org/jeps/504), so there will be no more applets with the next JDK (JDK 26).

07.07.2025 14:53 β€” πŸ‘ 35    πŸ” 21    πŸ’¬ 0    πŸ“Œ 2

Thank you :)

07.07.2025 12:00 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Thank you, the JEP took quite a while to complete. Yet I'm happy that that's my Job @sap.com

05.07.2025 12:20 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

And they are. If vendors decide, for example, to support Java 21 for longer than, they might also push their changes upstream.

Which makes the whole "support longer than the OpenJDK" make no sense. These vendors collectively form the OpenJDK project.

05.07.2025 09:03 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Java 25's new CPU-Time Profiler (1) - Mostly nerdless Learn all about Java 25's new CPU-time profiler and why it matters in this weeks blog post from the creator himself.

I sadly couldn't find any error in the pretty accurate description of my JEP 509, good job :)

If you want, you could link to mostlynerdless.de/blog/2025/06...

I start the follow-up blog post hopefully soon(ish)

04.07.2025 14:11 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Taming the Bias: Unbiased* Safepoint-Based Stack Walking in JFR - Mostly nerdless JFR is getting a new method sampler that walks stacks at safepoints in JDK 25. Learn all about the new sampler in this week's blog post.

Just some nitpicking on the text for the new cooperative sampler: I sample threads in Java only at safepoint, but if a thread is in native, then it's sampled directly. Furthermore, the new sampler introduced some safepoint-bias, see mostlynerdless.de/blog/2025/05... for more.

04.07.2025 09:41 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Forget `dd`, `yes >> $HOME/fill_disk.txt` is the best way to reliably fill your disk till the brim. No need to check how much space is left. I used this successfully to test that a tool I'm working on works as expected without disk space left.

04.07.2025 07:10 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

TIL: `jcmd $PID GC.heap_dump $FILE` wants the $FILE to either be an absolute location or relative to the current working directory of the Java application (not your current command)

27.06.2025 07:41 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Creating QR-Codes out of Chocolate Ever wondered how to rickroll your friend with a custom cake? In this talk, I'll show you how to use a 3D printer, a vacuum molder, and a...

If you want to see what I'm doing in my spare, watch this talk: app.media.ccc.de/v/gpn23-15-c...

27.06.2025 06:09 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Sadly no @javazone.bsky.social for me this year, after presentations in two years in a row. See you all hopefully somewhere else...

26.06.2025 18:15 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
An Experimental Front-End for JFR Queries - Mostly nerdless Learn how to use JFR queries and my new experimental query tool to explore your JFR recordings.

Learn how to use JFR queries and my new experimental query tool to explore your JFR recordings in this weeks blog post: mostlynerdless.de/blog/2025/06...

25.06.2025 09:35 β€” πŸ‘ 2    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Preview
Wait you can place Java annotations there? - Mostly nerdless "java.lang. @Nullable Integer @Nullable [] arr @Nullable []" is valid Java, but why? Learn more about the placement of Java annotations here.

You might find my blog post on annotations helpful: mostlynerdless.de/blog/2024/06...

23.06.2025 06:18 β€” πŸ‘ 2    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Preview
Java 25's new CPU-Time Profiler (1) - Mostly nerdless Learn all about Java 25's new CPU-time profiler and why it matters in this weeks blog post from the creator himself.

You can read a more detailed description on my blog: mostlynerdless.de/blog/2025/06...

Detailed implementation deep-dive coming soon.

13.06.2025 07:19 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Happy birthday :)

12.06.2025 06:40 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Thank you

11.06.2025 12:12 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Java 25's new CPU-Time Profiler (1) - Mostly nerdless Learn all about Java 25's new CPU-time profiler and why it matters in this weeks blog post from the creator himself.

Learn all about Java 25's new CPU-time profiler and why it matters in this week's blog post: mostlynerdless.de/blog/2025/06...

11.06.2025 11:53 β€” πŸ‘ 6    πŸ” 5    πŸ’¬ 1    πŸ“Œ 0

The links are sadly not clickable in speakerdeck. Could you put them below in the description of your deck?

11.06.2025 10:51 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

I just updated the JFR events collection (sapmachine.io/jfrevents). It now includes JDK 25 and JDK 26 with my CPUTimeSample event:

10.06.2025 12:44 β€” πŸ‘ 5    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0

It has sadly nothing to do with JEP 435. The issues that I wanted to tackle still exist, but the CPU Time Profiler is what was possible to get into the JDK.

05.06.2025 13:12 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

@mostlynerdless.de is following 20 prominent accounts