Releases: SAP/async-profiler
Releases · SAP/async-profiler
v3.0.1
SAP interim release that works with JDK23.
Binary launcher and AsyncGetCallTrace replacement
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
Maintenance release
v2.5.1
Bug fixes
- Prevent early unloading of libasyncProfiler.so
- Read kernel symbols only for perf_events
- Escape backslashes in flame graphs
- Avoid duplicate categories in
jfrsync
mode - Fixed stack overflow in RedefineClasses
- Fixed deadlock when flushing JFR
Improvements
- Support OpenJDK C++ Interpreter (aka Zero)
- Allow reading incomplete JFR recordings
macOS/ARM64 port and many JFR improvements
v2.5
Features
- macOS/ARM64 (aka Apple M1) port
- PPC64LE port (contributed by @ghaug)
- Profile low-privileged processes with perf_events (contributed by @Jongy)
- Raw PMU events; kprobes & uprobes
- Dump results in the middle of profiling session
- Chunked JFR; support JFR files larger than 2 GB
- Integrate async-profiler events with JDK Flight Recordings
Improvements
- Use RDTSC for JFR timestamps when possible
- Show line numbers and bci in Flame Graphs
- jfr2flame can produce Allocation and Lock flame graphs
- Flame Graph title depends on the event and
--total
- Include profiler logs and native library list in JFR output
- Lock profiling no longer requires JVM symbols
- Better container support
- Native function profiler can count the specified argument
- An option to group threads by scheduling policy
- An option to prepend library name to native symbols
Notes
- macOS build is provided as a fat binary that works both on x86-64 and ARM64
- 32-bit binaries are no longer shipped. It is still possible to build them from sources
- Dropped JDK 6 support (may still work though)
Maintenance release
v1.8.7
Bug fixes
- Workaround for JDK-8173361
- Backported fix for "Accept timed out" exception
Maintenance release
v1.8.6
Improvements
log=none
option to suppress warnings about missing JVM symbols- Sign macOS binaries
Bug fixes
- Workaround for JDK-8212160
macOS/AArch64 support
This is an Early Access release of async-profiler with the native support for Apple silicon.
Maintenance release
v1.8.5
Improvements
- Backported JFR to FlameGraph converter
Bug fixes
- Stricter
safemode
to avoid stack walking in suspicious cases
Multievent profiling. JFR v2 compatible output
v2.0
Features
- Profile multiple events together (cpu + alloc + lock)
- HTML 5 Flame Graphs: faster rendering, smaller size
- JFR v2 output format, compatible with FlightRecorder API
- JFR to Flame Graph converter
- Automatically turn profiling on/off at
--begin
/--end
functions - Time-to-safepoint profiling:
--ttsp
Improvements
- Unlimited frame buffer. Removed
-b
option and 64K stack traces limit - Additional JFR events: OS, CPU, and JVM information; CPU load
- Record bytecode indices / line numbers
- Native stack traces for Java events
- Improved CLI experience
- Better error handling; an option to log warnings/errors to a dedicated stream
- Reduced the amount of unknown stack traces
Changes
- Removed non-ASL code. No more CDDL license
Maintenance release
v1.8.4
Improvements
- Smaller and faster agent library
Bug fixes
- Fixed JDK 7 crash during wall-clock profiling