v3.0
Features
- async-profiler#724: Binary launcher
asprof
- async-profiler#751: Profile non-Java processes
- async-profiler#795: AsyncGetCallTrace replacement
- async-profiler#719: Classify execution samples into categories in JFR converter
- async-profiler#855:
ctimer
mode for accurate profiling without perf_events - async-profiler#740: Profile CPU + Wall clock together
- async-profiler#736: Show targets of vtable/itable calls
- async-profiler#777: Show JIT compilation task
- async-profiler#644: RISC-V port
- async-profiler#770: LoongArch64 port
Improvements
- async-profiler#733: Make the same
libasyncProfiler
work with both glibc and musl - async-profiler#734: Support raw PMU event descriptors
- async-profiler#759: Configure alternative profiling signal
- async-profiler#761: Parse dynamic linking structures
- async-profiler#723:
--clock
option to select JFR timestamp source - async-profiler#750:
--jfrsync
may specify a list of JFR events - async-profiler#849: Parse concatenated multi-chunk JFRs
- async-profiler#833: Time-to-safepoint JFR event
- async-profiler#832: Normalize names of hidden classes / lambdas
- async-profiler#864: Reduce size of HTML Flame Graph
- async-profiler#783: Shutdown asprof gracefully on SIGTERM
- Better demangling of C++ and Rust symbols
- DWARF unwinding for ARM64
JfrReader
can parse in-memory buffer- Support custom events in
JfrReader
- An option to read JFR file by chunks
- Record
GCHeapSummary
events in JFR
Bug fixes
- Workaround macOS crashes in SafeFetch
- Fixed attach to OpenJ9 on macOS
- Support
UseCompressedObjectHeaders
aka Lilliput - Fixed allocation profiling on JDK 20.0.x
- Fixed context-switches profiling
- Prefer ObjectSampler to TLAB hooks for allocation profiling
- Improved accuracy of ObjectSampler in
--total
mode - Make Flame Graph status line and search results always visible
loop
andtimeout
options did not work in some modes- Restart interrupted poll/epoll_wait syscalls
- Fixed stack unwinding issues on ARM64
- Workaround for stale jmethodIDs
- Calculate ELF base address correctly
- Do not dump redundant threads in a JFR chunk
check
action prints result to a file- Annotate JFR unit types with
@ContentType