It's All Relative

Performance Minded

Jean-Philippe Bempel’s Blog

01 Dec 2023Chasing a Metaspace leak
22 Jun 2022Why JVM modern profilers are still safepoint biased?
22 Mar 2022Inside JVM debug symbols
02 Aug 2020When Escape Analysis fails you?
25 Jul 2020A Closer Look at JFR Streaming
22 May 2020Startup, containers & Tiered Compilation
28 Feb 2019Power management & performance
19 Sep 2018JCrete 2018
16 Mar 2016CompileCommand JVM option
30 Dec 2015PrintAssembly output explained!
14 Oct 2015assignment-with-use or inline assignment
21 Sep 2015Yoda conditions
14 Sep 2015Why BIOS settings matters (and not size)!
28 Aug 2015Ordered scheduler
13 Jul 2015Notify... oh, wait! I have a signal.
07 Jul 2015Whitebox API
26 May 2015Volatile and memory barriers
23 May 2014Measuring contention on locks
09 May 2014Branches: I have lost my path!
17 Dec 2013ArrayList vs LinkedList
30 Oct 2013Hardware performance counters: atomic vs standard incrementation
03 Sep 2013Null check elimination
02 Aug 2013Hardware performance counters
02 Jul 2013How to build hsdis-amd64.dll?
16 Jun 2013Is it really how JVM optimizes the code?
03 Apr 2013CompileThreshold is relative!
25 Mar 2013Lock Lock Lock: Enter!
04 Mar 2013Safety First: Safepoints
15 Nov 2012The useful JVM options
24 Oct 2012Virtual Call 911
16 Oct 2012How to print disassembly from JIT Code?
09 Oct 2012Volatile

Public talk slides

Apr 2023Mastering GC: tame the beast and make it your best ally
Apr 2021Real World JFR:
Experiences building and deploying a continuous profiler at scale
Feb 2021Production profiling with JDK Flight Recorder & JDK Mission Control
Apr 2019Understanding Low Latency JVM GCs
Oct 2018Understanding JVM GCs: Advanced
May 2018CLR-JVM implementation differences
Apr 2017JVM troubleshooting
May 2016OutOfMemoryError: What is the cost of Java Objects
Jul 2015Low latency & Mechanical Sympathy: issues and solutions
Apr 2015Lock-free programming: Pro Tips
Apr 2014Measuring directly from CPU: Hardware Performance Counters