Notes and scripts for my JUG Karlsruhe talk on Java profiling [pdf] [pptx] [recording]
I collected a list of interesting talks on profiling in a YouTube playlist
The following are interesting blogs on Java profiling and performance:
- Aleksey Shipilev: https://shipilev.net/
- Nitsan Wkart: http://psy-lob-saw.blogspot.com/
- Richard Startin: https://richardstartin.github.io/
- Peter Lawrey: http://blog.vanillajava.blog/
- Martin Thompson: https://mechanical-sympathy.blogspot.com/
- Jean-Philippe Bempel: https://jpbempel.github.io/
- Marcus Hirt: http://hirt.se/blog/
- Krzysztof Ślusarski: https://krzysztofslusarski.github.io/
- Andrei Pangin: Creator of async-profiler
- JVMPerformance: JVM performance news (old)
- Alexsey Shipilev
- Jean-Philippe Bempel
- Peter Veentjer
- Gunnar Morling
- Mario Fusco
- Francesco Nigro
- Chris Newland
- with his homepage full of helper tools to explore JEPs, VM options, ...: chriswhocodes.com
- https://blog.ippon.fr/2013/03/11/improving-the-performance-of-the-spring-petclinic-sample-application-part-1-of-5/
- https://bell-sw.com/announcements/2020/07/22/Hunting-down-code-hotspots-with-JDK-Flight-Recorder/
- https://foojay.io/today/using-java-flight-recorder-and-mission-control-part-1/
- https://raw.githubusercontent.com/mirage22/jmc-jvm-lang-tutorial/master/20211109_IngJUG_JFR_KotlinSpezial.pdf
- https://foojay.io/today/continuous-production-profiling-and-diagnostics/
Wrapper around JFR and async-profiler
($ASYNC_PROFILER
should point to repo with built async-profiler).
Works only for JDK11+.
Record a simple JFR trace via
./demo.py jfr -f file.jfr -- -cp example/target/example-1.0.jar EventFilterApp example/samples/large.jfr ".*GC.*"
and a simple async-profiler trace via
./demo.py async -s -f file.jfr -- -cp example/target/example-1.0.jar EventFilterApp example/samples/large.jfr ".*GC.*"
produce a flamegraph via
./demo.py async -f file.html -t flamegraph -- -cp example/target/example-1.0.jar EventFilterApp example/samples/large.jfr ".*GC.*"
Requires the click package (install it via pip3 install click
)
cpu_profiling.jfc
: CPU profiling and nothing morecpu_and_mem_profiling.jfc
: CPU and memory profiling and nothing more
JMC can be found from different vendors, for example
The prototypical version of the IntellIJ plugin can be found on GitHub.
async-profiler can be found on GitHub too.
CC-BY-SA 3.0