The JVM Profiler That Managed to Become Cross-Platform
summary
JetBrains wanted async-profiler support on Windows but async-profiler for Linux/Mac relies on POSIX signals and native stack unwinding. The talk explains investigating AsyncGetCallTraces, comparing its internals with Java Flight Recorder (JFR), and then implementing a Windows solution by emulating the signal mechanism and performing native stack unwinding, plus addressing various OS-specific issues.
AI-written summary · about
chapters (23)
- 0:00Introduction
- 2:16Why cross-platform profiler
- 3:00Profiler selection criteria
- 6:56Async Profiler internals
- 10:29Signal issues on Windows
- 12:36App code changes
- 13:41Thread stop on Windows
- 16:11Handler control transfer
- 18:37Returning control
- 22:56Calling convention challenges
- 26:09Arbitrary code execution
- 27:56Handler testing
- 30:46Context passing to profiler
- 33:37Signal emulation on Windows
- 35:20Access violation problem
- 43:21Why ASGCT is essential
- 45:48JVM patches
- 47:40JVM TLS handling
- 50:10Profiler printf issues
- 56:43Native stacks in profiler
- 1:00:38Lock monitoring
- 1:02:26Symbols and debugging
- 1:04:14Acknowledgments and conclusions
related talks
33mWriting a Java Profiler in Pure Java
52mProfilers Are Lying Hobbitses
50mJPoint 2023 TechRadar: Performance Tools
41mUnleash the Power of Open-Source Java Profilers
45mJava Profiling in the Linux Style
45mThe perf Profiler and the JVM (Part 1)
45mJava Performance Analysis and Optimization
01h 01mProfiler perf and the JVM (Part 2)
