Another vote in favor of including async-profiler as a library in C*. The new heatmap format in async-profiler 4.0[1] is excellent and makes long-running profiles miles more useful than a plain flamegraph, but it requires a post-processing step after a JFR is collected, which would require a dependency on jfr-converter.jar[2]. Exposing the JFR files directly would be reasonable but slightly less useful, and the post-processed heatmap HTML files are much smaller and self-contained. A recent example on my machine shows HTML at 1/20th the size of the raw JFR dump, which is meaningful especially for uploading to Jira.
Note that JDK25 will have experimental support for better CPU profiling[3], but async-profiler is still more mature and featureful, especially for other profiling types (wall, alloc). [1]: https://github.com/async-profiler/async-profiler/blob/master/docs/Heatmap.md [2]: https://github.com/async-profiler/async-profiler?tab=readme-ov-file#stable-release-40 [3]: https://mostlynerdless.de/blog/2025/06/11/java-25s-new-cpu-time-profiler-1/