Accelerating performance of Java applications on Arm64
summary
Claims a 30% improvement on Arm64 between Java 11 and Java 21 and shows which JVM patches deliver it: intrinsics (e.g., compact strings giving 5–25% less heap and similar speedups), SIMD neon ports (up to 3x on an ffmpeg filter), and relaxed memory-barrier changes to avoid costly DSB/ISB penalties. Demonstrates a bug where always pre-touch plus THP fragments huge pages and the madvise MADV_POPULATE workaround, recommends heap at 75–85% of VM memory or MaxRamPercent, G1 vs ZGC for tails, and uses perf/flamegraphs and the Amper performance toolkit.
AI-written summary · about
chapters (16)
- 0:00Introduction to talk
- 2:34Why consider Arm64
- 6:47Java 8 vs Java 21 performance
- 8:31Power of intrinsics
- 10:41SIMD on Arm64
- 13:29Atomic instructions quirks
- 16:00Memory management basics
- 23:18Memory barriers explained
- 31:11JVM tuning for cloud
- 39:49OS tuning with TuneD
- 43:21Arm64 memory page sizes
- 44:22Kernel tick length impact
- 46:09THP and pre-touch results
- 46:49Disabling tiered compilation
- 47:32Performance tools overview
- 48:15Q&A session
related talks
39mJava on ARM. Theory, Applications, and Workloads
42mJava on ARM. Theory, Applications and Workloads
48mJust-In-Time Compilation for Java Performance: Recent and Ongoing Improvements
51mJava at Speed: Getting the Most Out of Modern Hardware
41mUp and Away: JDK Optimizations
51mJava Performance Update: From JDK 21 to JDK 25
48mJava 9 Performance
35mJava at Speed: Building a Better JVM
